fix: 示例与文档跟上 handler 注入规则——FRIEND_ADD 改标注 FriendAdd

0f3ed09 后 dict 标注不可注入,示例 handler 每次触发都被异常隔离吞掉;
官方 FRIEND_ADD 字段名为 openid,原 d.get('user_openid') 写法在重构
前也取不到值。payloads 模块 docstring 同步改为现行语义(未知事件只能
经 Event.typed 拿 dict)。
This commit is contained in:
snowy-yang committed 2026-10-01 23:04:49 +08:00
1 parent 0f3ed09233
commit e5dd805d19
2 files changed
+12 -6

No files matched your search

+9 -3
View File
@@ -13,7 +13,13 @@ from loguru import logger
from qqbotsdk import EventEmitter, main from qqbotsdk import EventEmitter, main
from qqbotsdk.api import BotApi, button, keyboard from qqbotsdk.api import BotApi, button, keyboard
from qqbotsdk.events import Event from qqbotsdk.events import Event
from qqbotsdk.payloads import C2CMessage, GroupAddRobot, GroupAtMessage, Interaction from qqbotsdk.payloads import (
C2CMessage,
FriendAdd,
GroupAddRobot,
GroupAtMessage,
Interaction,
)
ee = EventEmitter() ee = EventEmitter()
@@ -98,8 +104,8 @@ async def on_c2c_message(msg: C2CMessage, api: BotApi) -> None:
@ee.on("FRIEND_ADD") @ee.on("FRIEND_ADD")
async def on_friend_add(d: dict) -> None: async def on_friend_add(added: FriendAdd) -> None:
logger.info(f"新增用户:{d.get('user_openid')}") logger.info(f"新增用户:{added.openid}")
if __name__ == "__main__": if __name__ == "__main__":
+3 -3
View File
@@ -1,9 +1,9 @@
"""事件 payload 的 dataclass 定义与解析。 """事件 payload 的 dataclass 定义与解析。
handler 直接标注具体类型即可拿到解析后的对象(如 handler 直接标注具体类型即可拿到解析后的对象(如
`async def on_msg(msg: GroupAtMessage)`);未收录的事件类型 `async def on_msg(msg: GroupAtMessage)`);未收录的事件类型没有可标注的
由 emitter 回退传原始 dict,新增事件只需在这里加 dataclass dataclass,只能经 `Event.typed` 拿到原始 dict——新增事件只需在这里加
并登记到 EVENT_TYPES。 dataclass 并登记到 EVENT_TYPES。
""" """
from dataclasses import dataclass, fields from dataclasses import dataclass, fields