Skip to content

feat(qq): 支持 QQ GroupMessageCreateEvent 全量群消息事件#33

Open
This-is-XiaoDeng wants to merge 3 commits into
noneplugin:mainfrom
Moonlark-Dev:main
Open

feat(qq): 支持 QQ GroupMessageCreateEvent 全量群消息事件#33
This-is-XiaoDeng wants to merge 3 commits into
noneplugin:mainfrom
Moonlark-Dev:main

Conversation

@This-is-XiaoDeng

Copy link
Copy Markdown

背景

QQ adapter (adapter-qq) v1.7.0+ 新增了 GroupMessageCreateEventEventType.GROUP_MESSAGE_CREATE),用于接收不需要 @ 机器人的全量群消息。GroupAtMessageCreateEvent 现已继承自此类。

改动

文件 改动
nonebot_plugin_session/adapters/qq.py 添加 GroupMessageCreateEvent 导入(独立 try/except 兼容低版本)
同上 - extract_platform() 通过 _HAS_GROUP_MESSAGE 标志守卫,高版本 ⮕ qq
同上 - extract_level() 同上 ⮕ LEVEL2
同上 - extract_id2() 同上 ⮕ self.event.group_openid
tests/test_qq.py 新增 test_group_message_create_event;修复 test_group_at_message_create_event__type__ 误写为 C2C_MESSAGE_CREATE 的问题;适配 adapter-qq v1.7.1 模型变化

兼容性

  • adapter-qq < 1.7.0GroupMessageCreateEvent 导入失败时设为 Noneisinstance 检查搭配 is not None 守卫,不会报错
  • adapter-qq >= 1.7.0:自动启用新事件支持
  • EventType.GROUP_MESSAGE_CREATE 的访问用 hasattr(EventType, ...) 守卫,低版本不会触发 AttributeError

QQ adapter v1.7.0+ 新增了 GroupMessageCreateEvent(全量群消息,
无需@机器人),GroupAtMessageCreateEvent 现继承自它。

修改:
- 添加 GroupMessageCreateEvent 导入
- extract_platform(): 添加 EventType.GROUP_MESSAGE_CREATE → qq
- extract_level(): 添加 EventType.GROUP_MESSAGE_CREATE → LEVEL2
- extract_id2(): 添加 GroupMessageCreateEvent → group_openid
- 新增 test_group_message_create_event 测试全量群消息事件
- 修复 test_group_at_message_create_event 的 __type__ 错误
  (之前误写为 C2C_MESSAGE_CREATE)
- 适配 adapter-qq v1.7.1 的 GroupMemberAuthor 新增 bot 字段
  和 GroupMessageCreateEvent 新增 group_id 字段
- 用单独 try/except 导入 GroupMessageCreateEvent,低版本设为 None
- extract_platform/level 中使用 _HAS_GROUP_MESSAGE 标志守卫
  EventType.GROUP_MESSAGE_CREATE 的访问
- extract_id2 中检查 GroupMessageCreateEvent 是否为 None 再 isinstance
- 低版本 adapter 完全不受影响,高版本自动启用新事件支持
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant