事件上报
约 649 字大约 2 分钟
2025-02-07
事件
NcatBot 的事件分两类, 一类是由 NapCat 上报的官方事件, 一类是由插件上报的自定义事件
每种事件有一个唯一的事件类型, 事件类型是一个用 .
分割的多级字符串.
官方事件类型
官方事件类型的字面量如下:
OFFICIAL_GROUP_MESSAGE_EVENT = "ncatbot.group_message_event" # group_event
OFFICIAL_PRIVATE_MESSAGE_EVENT = "ncatbot.private_message_event" # private_event
OFFICIAL_REQUEST_EVENT = "ncatbot.request_event" # request_event
OFFICIAL_NOTICE_EVENT = "ncatbot.notice_event" # notice_event
OFFICIAL_STARUP_EVENT = "ncatbot.starup_event" # starup_event
官方事件发生的条件
group_event
: 收到群聊消息时发生, 效果是触发所有绑定的回调函数并上报到事件总线.- 传入回调函数的参数是
GroupMessage
实例. - 传入事件总线的参数是
Event
实例, 所带的数据(Event.data
)为GroupMessage
实例.
- 传入回调函数的参数是
private_event
: 收到私聊消息时发生, 其余同上, 区别是GroupMessage
换为PrivateMessage
.notice_event
: 收到通知信息时发生, 效果是触发所有绑定的回调函数并上报到事件总线.- 传入回调函数的参数是一个
dict
. - 传入事件总线的参数
Event
实例, 所带的数据(Event.data
)为dict
.
- 传入回调函数的参数是一个
request_event
: 收到请求信息时发生.- 传入回调函数的参数是
Request
实例。 - 传入事件总线的参数
Event
实例, 所带的数据(Event.data
)为Request
实例.
- 传入回调函数的参数是
starup_event
: API 可用时发生,无参数。
具体参数格式查看回调函数参数
自定义事件类型
参阅事件的发布和订阅.
官方事件上报
事件上报代码
参阅事件的发布和订阅 以及下面的源代码.
python
async def handle_group_event(self, msg: dict):
msg: GroupMessage = GroupMessage(msg)
for handler, types in self._group_event_handlers:
if types is None or any(i["type"] in types for i in msg.message):
await handler(msg)
await self.plugin_sys.event_bus.publish_async(
Event(OFFICIAL_GROUP_MESSAGE_EVENT, msg, EventSource(msg.user_id, msg.group_id),)
)
async def handle_notice_event(self, msg: dict):
_log.debug(msg)
for handler in self._notice_event_handlers:
await handler(msg)
await self.plugin_sys.event_bus.publish_async(Event(OFFICIAL_NOTICE_EVENT, msg))
四种消息的定义
- 群聊消息: 略
- 私聊消息: 略
- 通知消息: 消息撤回,头像双击动作,私聊输入状态更新,群成员变化,群成员减少,禁言相关。
- 请求消息: 加好友请求和加群请求。
自定义事件上报
参阅事件的发布和订阅
版权所有
版权归属:huan-yp