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
+2
-6
@@ -63,7 +63,7 @@ async def slow(...): ...
|
||||
|
||||
## Event
|
||||
|
||||
`from qqbotsdk.events import Event`,一条 DISPATCH 事件的轻量封装,属性兼容群(openid)与频道两套字段名:
|
||||
`from qqbotsdk.events import Event`,业务事件推送信封(op/t/d/id)的轻量封装,只封装信封语义、不做字段名映射;事件体字段请标注对应 payload dataclass(见下文)获取解析结果:
|
||||
|
||||
| 属性 | 说明 |
|
||||
|---|---|
|
||||
@@ -71,11 +71,7 @@ async def slow(...): ...
|
||||
| `.data` | `d` 的 dict 拷贝 |
|
||||
| `.typed` | `d` 的 dataclass 解析结果(未知事件类型为 dict) |
|
||||
| `.type` | 事件 t 名 |
|
||||
| `.user_id` | 用户标识(兼容 `user_id`/`from_user_id`) |
|
||||
| `.group_id` | `group_openid` |
|
||||
| `.content` | 消息文本 |
|
||||
| `.message_id` | `d["id"]`,消息事件的被动回复凭据(msg_id) |
|
||||
| `.event_id` | 推送信封顶层的事件 id(与 op/t/d 平级,形如 `INTERACTION_CREATE:uuid`);非消息事件(`INTERACTION_CREATE`/`GROUP_ADD_ROBOT` 等)的被动回复凭据只有这里能拿到,事件体里的裸 UUID 不行(官方点名的常见坑) |
|
||||
| `.event_id` | 推送信封顶层的事件 id(与 op/t/d 平级,形如 `INTERACTION_CREATE:uuid`);非消息事件(`INTERACTION_CREATE`/`GROUP_ADD_ROBOT` 等)的被动回复凭据只有这里能拿到,事件体里的裸 UUID 不行(官方点名的常见坑);消息事件的被动回复凭据是事件体的 `d.id`(payload 的 `.id` 字段,即 msg_id),不用这里 |
|
||||
|
||||
## Config
|
||||
|
||||
|
||||
Reference in new issue
Block a user