fix: read event.source.{platform,user_id} not event.{platform,user_id}

MessageEvent wraps source in nested SessionSource — fields at the
top level don't exist, causing resolve_peer() to always fall through
to the fallback_peer. This meant every Discord user got a raw
snowflake peer created instead of the mapped name.
This commit is contained in:
2026-05-26 22:03:34 -04:00
parent 72c9ffaf00
commit c6b0e1c683

View File

@@ -292,8 +292,12 @@ def _patch_session_db() -> None:
def _pre_gateway_dispatch(event: Any, gateway: Any, session_store: Any, **kw) -> dict | 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.""" """Resolve peer identity and store it for Honcho session init."""
platform = getattr(event, "platform", "unknown") # NOTE: MessageEvent wraps source in nested SessionSource object.
user_id = getattr(event, "user_id", "unknown") # 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) resolved = resolve_peer(platform, user_id)
if resolved: if resolved: