mirror of
https://github.com/snowy-yang/qqbotsdk.git
synced 2026-10-21 11:04:48 +00:00
refactor!: Event 收敛为推送信封封装,删除字段名兼容属性
删除 Event 的 user_id/group_id/content/message_id 四个属性:它们是 "兼容群(openid)与频道两套字段名"的映射层,其中 user_id 还带着 旧版群消息 payload 顶层 from_user_id 的回退(现行格式发言人标识在 author 里,该回退永远轮不到)。Event 只保留信封语义: .raw/.data/.typed/.type/.event_id,事件体字段一律标注 payload dataclass(如 msg: GroupAtMessage)获取解析结果。 破坏性变更:event.group_id → msg.group_openid、event.message_id → msg.id,以此类推;被动回复凭据分工不变——消息事件用事件体 d.id (msg_id),其余事件用信封顶层 event_id。 迁移:examples/group_bot 入群欢迎改标注 GroupAddRobot(已确认 MusicBot 未使用被删属性);GUIDE/API 同步删除对应属性行;测试 重写为信封语义断言 + typed 解析断言。 107 测试全绿,ruff/pyright 干净。
This commit is contained in:
1 parent
32d9438d31
commit
7e7dcbaa94
5 files changed
+32
-42
No files matched your search
@@ -13,7 +13,7 @@ from loguru import logger
|
||||
from qqbotsdk import EventEmitter, main
|
||||
from qqbotsdk.api import BotApi, button, keyboard
|
||||
from qqbotsdk.events import Event
|
||||
from qqbotsdk.payloads import C2CMessage, GroupAtMessage, Interaction
|
||||
from qqbotsdk.payloads import C2CMessage, GroupAddRobot, GroupAtMessage, Interaction
|
||||
|
||||
ee = EventEmitter()
|
||||
|
||||
@@ -74,17 +74,15 @@ async def on_button_click(inter: Interaction, event: Event, api: BotApi) -> None
|
||||
|
||||
|
||||
@ee.on("GROUP_ADD_ROBOT")
|
||||
async def on_robot_added(event: Event, api: BotApi) -> None:
|
||||
group_openid = event.group_id
|
||||
async def on_robot_added(added: GroupAddRobot, event: Event, api: BotApi) -> None:
|
||||
# 入群是事件而非消息:用信封顶层的事件 id 作 event_id 被动回复(拿不到则跳过)
|
||||
event_id = event.event_id
|
||||
if not (group_openid and event_id):
|
||||
logger.info(f"机器人加入群聊 {group_openid}(无事件 ID,跳过欢迎语)")
|
||||
if not (added.group_openid and event.event_id):
|
||||
logger.info(f"机器人加入群聊 {added.group_openid}(无事件 ID,跳过欢迎语)")
|
||||
return
|
||||
await api.post_group_message(
|
||||
group_openid,
|
||||
added.group_openid,
|
||||
content="大家好,我是本群机器人,@我即可体验~",
|
||||
event_id=event_id,
|
||||
event_id=event.event_id,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user