mirror of
https://github.com/snowy-yang/qqbotsdk.git
synced 2026-10-21 11:04:48 +00:00
feat!: intents 只按大类订阅、群消息全量模式与事件流优化
破坏性变更:intents.toml 订阅粒度收敛到 Intents 大类(分组)—— 配置从「[分组] 表内逐事件开关」改为「分组名 = true/false」。网关只接受 分组位掩码,组内事件本就无法单独订阅,此前的逐事件开关仅是「组内任一 为 true 即订阅整组」的装饰。旧格式不再兼容,与拼错的分组名、非布尔值 一样在启动时直接抛 ValueError,而非静默少订阅。 新增: - GROUP_MESSAGE_CREATE 事件接收(群消息全量模式,与 GROUP_AT_MESSAGE_CREATE 共用 GroupAtMessage);GroupAtMessage 补齐 message_type/message_scene/ attachments/mentions/ark_data/msg_elements 字段 优化: - 形参注入缓存化:合并缓存 handler 签名与类型标注解析(此前每条事件都重跑 inspect.signature/get_type_hints),services 命中改为每条事件实时判定, 保证「先注册 handler、后登记组件」的既有装配顺序不受影响 - EventQueue.put_event/put_reply 去掉多余的 return await - model.NoneType 联合成员顺序调整(None 置于末尾) 文档同步 GUIDE/API/README/CHANGELOG 与示例;测试 76 全绿,ruff/pyright 干净。
This commit is contained in:
1 parent
3237558128
commit
71cbfdaf5d
16 files changed
+204
-116
No files matched your search
+7
-2
@@ -181,10 +181,12 @@ async def slow(...): ...
|
||||
|
||||
### 事件名 → dataclass 对照
|
||||
|
||||
下表左列是 intents.toml 的订阅分组(订阅粒度即分组,组内事件无法单独开关),中列是同时属于该分组、会被一起推送的事件 `t` 名:
|
||||
|
||||
| intents 分组 | 事件 t 名 | dataclass |
|
||||
|---|---|---|
|
||||
| GROUP_AND_C2C_EVENT | `C2C_MESSAGE_CREATE` | `C2CMessage` |
|
||||
| | `GROUP_AT_MESSAGE_CREATE` | `GroupAtMessage` |
|
||||
| | `GROUP_AT_MESSAGE_CREATE` / `GROUP_MESSAGE_CREATE` | `GroupAtMessage` |
|
||||
| | `FRIEND_ADD` / `FRIEND_DEL` | `FriendAdd` / `FriendDel` |
|
||||
| | `GROUP_ADD_ROBOT` / `GROUP_DEL_ROBOT` | `GroupAddRobot` / `GroupDelRobot` |
|
||||
| | `C2C_MSG_REJECT` / `C2C_MSG_RECEIVE` | `C2CMsgReject` / `C2CMsgReceive` |
|
||||
@@ -206,11 +208,14 @@ async def slow(...): ...
|
||||
|
||||
未收录的事件(如私域 `MESSAGE_CREATE`、`DIRECT_MESSAGE_DELETE`、`GUILD_MEMBER_*`)handler 收到原始 dict;新增事件在 `payloads.py` 加 dataclass 并登记 `EVENT_TYPES` 即可。
|
||||
|
||||
`GROUP_MESSAGE_CREATE` 是群消息**全量模式**:需在开放平台开通"接收所有消息"权限,群里每条消息(不限 @机器人)都推送此事件,与 `GROUP_AT_MESSAGE_CREATE` 共用 `GroupAtMessage`。官方提示同一 msg_id 可能重复推送,业务侧需按 `id` 去重。
|
||||
|
||||
### 常用 dataclass 字段
|
||||
|
||||
```python
|
||||
Author # id, user_openid, member_openid, username, bot
|
||||
GroupAtMessage # id, content, group_openid, author, timestamp
|
||||
GroupAtMessage # id, content, group_openid, author, timestamp,
|
||||
# message_type, message_scene, attachments, mentions, ark_data, msg_elements
|
||||
C2CMessage # id, content, author, attachments, timestamp
|
||||
AtMessage # id, content, channel_id, guild_id, author, member, timestamp
|
||||
DirectMessage # 同 AtMessage
|
||||
|
||||
Reference in new issue
Block a user