跳转至

框架事件

框架事件综述

说明

框架事件由框架进行触发,其触发条件各异,对应不同应用场景

参数规范

触发事件时将会传入参数如下:

参数 类型 解释 缺省
plugin_event OlivOS.API.Event 应用相关事件的主要数据获取和与接口交互对象 None
Proc OlivOS.pluginAPI.shallow 当前插件所处的插件托盘组件 -
plugin_event

其中,plugin_event在一些事件中将固定传入None,这与这些事件的应用特性相关,例如初始化事件。其余场景下,plugin_event.data依照事件类型存在区别,将在每个事件的数据一栏具体说明。

同时,对于plugin_event类有如下成员

成员 类型 解释 缺省
bot_info OlivOS.API.bot_info_T 机器人信息 -
platform dict 消息源平台信息 -
platform['platform'] str 消息源平台实际平台
例如qqtelegram
-
platform['sdk'] str 消息源所基于SDK
例如onebottelegram_poll
-
platform['model'] str 消息源所基于模块模式
例如default
-
base_info dict 内容仅供内部使用,不推荐 {}
data - 此处略,以下详述 -
Proc

Proc传入的是整个插件加载器的进程对象,通常情况下它在插件的整个生命周期中都不会发生改变,所以你大可以将其赋值到插件内的某个全局变量上以确保随时可以使用,有一些常用参数是你可以用到的:

成员 类型 解释 缺省
Proc_data dict 进程数据信息 -
Proc_data['bot_info_dict'] list 登录账号信息
其中key为bot的hash
value为类型为OlivOS.API.bot_info_T的机器人信息
-

调用接口请参考插件接口 -> 进程接口章节。

调用入口

事件触发时将会尝试寻找插件命名空间下的main.Event中的相关方法。
- 例如

对于插件的命名空间为OlivaDiceCore的插件,在触发私聊消息事件时,则会调用的命名空间为OlivaDiceCore.main.Event.private_message的方法。

消息事件

私聊消息事件

原型

class Event(object):
    def private_message(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在收到私聊消息这类一对一场景消息时被调用

数据

成员 类型 解释 缺省
sub_type str 子类型 -
user_id ID 发送者的用户索引 -
sender USER 发送者的相关信息 -
message MSG 依照插件所制定的类型转换后的消息内容 -
message_sdk MSG 由平台所接收的消息格式 -
message_id ID 消息索引 -
raw_message MSG 依照插件所制定的类型转换后的消息源内容 -
raw_message_sdk MSG 由平台所接收的消息源格式 -

群聊消息事件

原型

class Event(object):
    def group_message(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在收到群聊消息、频道消息等多人聊天场景消息时被调用

数据

成员 类型 解释 缺省
sub_type str 子类型 -
host_id ID 发送上层群的索引
依平台区别通常为频道一类,不存在时缺省
None
group_id ID 发送群的索引 -
user_id ID 发送者的用户索引 -
sender USER 发送者的相关信息 -
message MSG 依照插件所制定的类型转换后的消息内容 -
message_sdk MSG 由平台所接收的消息格式 -
message_id ID 消息索引 -
raw_message MSG 依照插件所制定的类型转换后的消息源内容 -
raw_message_sdk MSG 由平台所接收的消息源格式 -

通知事件

群文件上传事件

原型

class Event(object):
    def group_file_upload(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在将文件上传至群聊、频道等多人聊天场景时被调用

数据

成员 类型 解释 缺省
group_id ID 发送群的索引 -
user_id ID 发送者的用户索引 -
file dict 文件信息 -
file['id'] ID 文件索引 -
file['name'] str 由平台所接收的消息格式 -
file['size'] int 文件大小 -
file['busid'] int 暂时无用 -

群管理变更事件

原型

class Event(object):
    def group_admin(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在群聊、频道等多人聊天场景中管理员发生增减时被调用

数据

成员 类型 解释 缺省
group_id ID 发送群的索引 -
user_id ID 被操作者的用户索引 -
action str 表明动作
set时表明新增群管理
unset时表明移除群管理
-

群成员减少事件

原型

class Event(object):
    def group_member_decrease(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在群聊、频道等多人聊天场景中群成员减少时被调用

数据

成员 类型 解释 缺省
group_id ID 发送群的索引 -
operator_id ID 操作者的用户索引 -
user_id ID 被操作者的用户索引 -
action str 表明动作
leave时表明主动离开
kick时表明被踢出
kick_me时表明被踢出的是机器人本身
-

群成员增加事件

原型

class Event(object):
    def group_member_increase(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在群聊、频道等多人聊天场景中群成员增加时被调用

数据

成员 类型 解释 缺省
group_id ID 发送群的索引 -
operator_id ID 操作者的用户索引 -
user_id ID 被操作者的用户索引 -
action str 表明动作
approve时表明被同意放行加入
invite时表明被邀请加入
-

群成员禁言事件

原型

class Event(object):
    def group_ban(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在群聊、频道等多人聊天场景中群成员被禁言时被调用

数据

成员 类型 解释 缺省
group_id ID 发送群的索引 -
operator_id ID 操作者的用户索引 -
user_id ID 被操作者的用户索引 -
duration int 被禁言的时长,0表示解除禁言 -

好友添加事件

原型

class Event(object):
    def friend_add(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在有新好友被添加时被调用

数据

成员 类型 解释 缺省
user_id ID 该好友的用户索引 -

群消息撤回事件

原型

class Event(object):
    def group_message_recall(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在有群消息被撤回时调用

数据

成员 类型 解释 缺省
group_id ID 该群索引 -
operator_id ID 操作者的用户索引 -
user_id ID 该用户的用户索引 -
message_id ID 被撤回的消息索引 -

私聊消息撤回事件

原型

class Event(object):
    def private_message_recall(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在有私聊消息被撤回时调用

数据

成员 类型 解释 缺省
user_id ID 该用户的用户索引 -
message_id ID 被撤回的消息索引 -

戳一戳事件

原型

class Event(object):
    def poke(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在有戳一戳发生时调用

数据

成员 类型 解释 缺省
group_id ID 该群索引,当发生在私聊中时为None -
user_id ID 操作者的用户索引 -
target_id ID 被操作者的用户索引 -

群荣誉变更事件

原型

class Event(object):
    def group_honor(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在有群成员的荣誉发生变化时调用

数据

成员 类型 解释 缺省
group_id ID 该群索引,当发生在私聊中时为None -
user_id ID 操作者的用户索引 -
type str talkativeperformeremotion
分别对应龙王、群聊之火、快乐源泉
-

请求事件

好友添加请求事件

原型

class Event(object):
    def friend_add_request(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在有加好友请求时调用

数据

成员 类型 解释 缺省
user_id ID 用户索引 -
comment str 验证信息 -
flag str 请求 flag,在调用处理请求的 API 时需要传入 -

加群请求事件

原型

class Event(object):
    def group_add_request(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在有加群请求时调用

数据

成员 类型 解释 缺省
group_id ID 该群索引 -
user_id ID 用户索引 -
comment str 验证信息 -
flag str 请求 flag,在调用处理请求的 API 时需要传入 -

加群邀请事件

原型

class Event(object):
    def group_invite_request(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件会在有加群邀请时调用

数据

成员 类型 解释 缺省
group_id ID 该群索引 -
user_id ID 用户索引 -
comment str 验证信息 -
flag str 请求 flag,在调用处理请求的 API 时需要传入 -

元事件

这些事件中plugin_event未说明的默认只传递None

初始化事件

原型

class Event(object):
    def init(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件在会在当前插件完成import流程后立即被调用。
这意味着其不会按照优先级顺序被调用。

初始化后事件

原型

class Event(object):
    def init_after(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件在会在完成所有插件的import流程后立即被依次调用。
这意味着其一定会按照优先级顺序被调用。

存储事件

原型

class Event(object):
    def save(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件在会在插件加载器认为需要让插件执行存储操作时被调用,通常为插件即将被重载时。
若为全局插件重载,则其一定会按照优先级顺序被调用。

菜单事件

原型

class Event(object):
    def menu(plugin_event, Proc):
        #plugin to do
        pass

描述

该事件在会在插件的菜单被点击时调用。
需要注意的是,该事件的plugin_event.bot_infoNone

数据

成员 类型 解释 缺省
namespace str 触发菜单的插件命名空间 -
event str 触发菜单的插件事件字段
于插件的自述文件(app.json)中指定
-

该事件一定会按照优先级顺序被调用。