Skip to content

Commit 0b5c2ce

Browse files
authored
✨ support new qq openid
1 parent 8e929f8 commit 0b5c2ce

File tree

2 files changed

+31
-20
lines changed

2 files changed

+31
-20
lines changed

nonebot/adapters/qq/event.py

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@
1414
RichText,
1515
QQMessage,
1616
AudioAction,
17+
FriendAuthor,
1718
MessageDelete,
1819
MessageAudited,
1920
ForumSourceInfo,
2021
MessageReaction,
2122
ForumAuditResult,
2223
ButtonInteraction,
24+
GroupMemberAuthor,
2325
)
2426

2527
E = TypeVar("E", bound="Event")
@@ -348,14 +350,6 @@ class DirectMessageDeleteEvent(MessageDeleteEvent):
348350
class QQMessageEvent(MessageEvent, QQMessage):
349351
_reply_seq: int = -1
350352

351-
@override
352-
def get_user_id(self) -> str:
353-
return self.author.id
354-
355-
@override
356-
def get_session_id(self) -> str:
357-
return self.author.id
358-
359353
@override
360354
def get_message(self) -> Message:
361355
if not hasattr(self, "_message"):
@@ -367,37 +361,48 @@ def get_message(self) -> Message:
367361
class C2CMessageCreateEvent(QQMessageEvent):
368362
__type__ = EventType.C2C_MESSAGE_CREATE
369363

364+
author: FriendAuthor
370365
to_me: bool = True
371366

367+
@override
368+
def get_user_id(self) -> str:
369+
return self.author.user_openid
370+
371+
@override
372+
def get_session_id(self) -> str:
373+
return f"friend_{self.author.user_openid}"
374+
372375
@override
373376
def get_event_description(self) -> str:
374377
return escape_tag(
375378
f"Message {self.id} from {self.author.id}: {self.get_message()!r}"
376379
)
377380

378-
@override
379-
def get_session_id(self) -> str:
380-
return f"friend_{self.author.id}"
381-
382381

383382
@register_event_class
384383
class GroupAtMessageCreateEvent(QQMessageEvent):
385384
__type__ = EventType.GROUP_AT_MESSAGE_CREATE
386385

386+
author: GroupMemberAuthor
387387
group_id: str
388388
to_me: bool = True
389389

390+
@override
391+
def get_user_id(self) -> str:
392+
return self.author.member_openid
393+
394+
@override
395+
def get_session_id(self) -> str:
396+
return f"group_{self.group_id}_{self.author.member_openid}"
397+
390398
@override
391399
def get_event_description(self) -> str:
392400
return escape_tag(
393-
f"Message {self.id} from {self.author.id}@[Group:{self.group_id}]: "
401+
f"Message {self.id} from "
402+
f"{self.author.member_openid}@[Group:{self.group_id}]: "
394403
f"{self.get_message()!r}"
395404
)
396405

397-
@override
398-
def get_session_id(self) -> str:
399-
return f"group_{self.group_id}_{self.author.id}"
400-
401406

402407
@register_event_class
403408
class InteractionCreateEvent(NoticeEvent, ButtonInteraction):

nonebot/adapters/qq/models/qq.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@
55
from pydantic import BaseModel, validator
66

77

8-
class Author(BaseModel):
8+
class FriendAuthor(BaseModel):
99
id: str
10+
user_openid: str
11+
12+
13+
class GroupMemberAuthor(BaseModel):
14+
id: str
15+
member_openid: str
1016

1117

1218
class Attachment(BaseModel):
@@ -30,7 +36,6 @@ class Media(BaseModel):
3036

3137
class QQMessage(BaseModel):
3238
id: str
33-
author: Author
3439
content: str
3540
timestamp: str
3641
attachments: Optional[List[Attachment]] = None
@@ -94,7 +99,8 @@ class ButtonInteraction(BaseModel):
9499

95100

96101
__all__ = [
97-
"Author",
102+
"FriendAuthor",
103+
"GroupMemberAuthor",
98104
"Attachment",
99105
"Media",
100106
"QQMessage",

0 commit comments

Comments
 (0)