diff --git a/__init__.py b/__init__.py index abd3037..6710a37 100644 --- a/__init__.py +++ b/__init__.py @@ -292,8 +292,12 @@ def _patch_session_db() -> None: def _pre_gateway_dispatch(event: Any, gateway: Any, session_store: Any, **kw) -> dict | None: """Resolve peer identity and store it for Honcho session init.""" - platform = getattr(event, "platform", "unknown") - user_id = getattr(event, "user_id", "unknown") + # NOTE: MessageEvent wraps source in nested SessionSource object. + # event.source.{platform, user_id} are the correct paths — NOT + # event.{platform, user_id} which don't exist on MessageEvent. + source = event.source if hasattr(event, "source") else event + platform = getattr(source, "platform", "unknown") + user_id = getattr(source, "user_id", "unknown") resolved = resolve_peer(platform, user_id) if resolved: