diff --git a/nonebot/adapters/cqhttp/bot.py b/nonebot/adapters/cqhttp/bot.py index a96f1308..d0f90dd7 100644 --- a/nonebot/adapters/cqhttp/bot.py +++ b/nonebot/adapters/cqhttp/bot.py @@ -302,7 +302,7 @@ class Bot(BaseBot): detail_type = f".{detail_type}" if detail_type else "" sub_type = message.get("sub_type") sub_type = f".{sub_type}" if sub_type else "" - models = get_event_model(f".{post_type}{detail_type}{sub_type}") + models = get_event_model(post_type + detail_type + sub_type) for model in models: try: event = model.parse_obj(message) diff --git a/nonebot/adapters/cqhttp/event.py b/nonebot/adapters/cqhttp/event.py index eaede5d5..0d28101b 100644 --- a/nonebot/adapters/cqhttp/event.py +++ b/nonebot/adapters/cqhttp/event.py @@ -237,6 +237,10 @@ class CQHTTPEvent(Event): def get_plaintext(self) -> str: raise ValueError("Event has no message!") + @overrides(Event) + def get_session_id(self) -> str: + raise ValueError("Event has no message!") + # Models class Sender(BaseModel): @@ -322,6 +326,10 @@ class MessageEvent(CQHTTPEvent): def get_plaintext(self) -> str: return self.message.extract_plain_text() + @overrides(CQHTTPEvent) + def get_session_id(self) -> str: + return str(self.user_id) + class PrivateMessageEvent(MessageEvent): __event__ = "message.private"