Skip to content
U2FsdGVkX1 edited this page Dec 18, 2018 · 18 revisions

注意

  1. 几乎每一个事件都有事件触发者和事件触发源
  2. 事件触发者和事件触发源的区别是……如果在群组内,那么触发者就是触发者,而触发源是群组(如果是私聊的话,那么这两个就是一样了)
  3. 不管是消息触发者还是消息触发源,它们都是一个数组,拥有以下成员
// 以下只演示消息触发源,事实上消息触发者也拥有这些成员
// 以下成员只有 id、type 为必定存在,剩下的都是可能存在可能不存在
$chat['id'] // 触发源 id
$chat['type'] // 触发源类型(可以是 private、group、supergroup、channel)
$chat['title'] // 触发源名称(比如在群组里就是群组名)
$chat['username'] // 触发源的 username(事实上如果在群组的话,那么这个是不存在的,因为群组不需要 username……所以一般都用触发者)
$chat['first_name'] // 触发源的 first_name(一样,群组不存在,一般用 $from['first_name'])
$chat['last_name'] // 触发源的 last_name(一样,群组……算了我都懒得打字了)
$chat['reply_to_message'] // 触发源的回复消息(触发者不存在)

init 事件

介绍

init 事件看名字好像就知道是什么了……也就是插件初始化事件……

参数表

$func // 即将调用的事件(比如收到一条命令之后就会触发 command 事件,那么 init 事件作为初始化事件,会在调用 command 事件前得到即将调用的事件)
$from // 消息触发者
$chat // 消息触发源
$date // 消息触发时间

command 事件

介绍

command 事件是收到一条命令(也就是"/"开头的消息)时触发的

参数表

// 假设现在发送了一条 "/test a param2 b param4" 的话……
$command // 发送的命令(/test)
$param // 命令的参数(array ('a', 'param2', 'b', 'param4'))
$message_id // 消息的 message_id
$from // 消息触发者
$chat // 消息触发源
$date // 消息触发时间

message 事件

介绍

message 事件是收到一条消息时触发的(和 command 事件不同的是,即便不为 "/" 开头的消息也会触发)

参数表

// 假设现在发送了一条 "苟……富贵,勿相忘" 的话……
$message // 消息内容(苟……富贵,勿相忘)
$message_id // 消息的 message_id
$from // 消息触发者
$chat // 消息触发源
$date // 消息触发时间

sticker、photo 事件

介绍

sticker 和 photo 事件分别是收到表情以及收到图片

参数表

// photo 事件的话 $sticker 参数为 $photo,并且还会有一个 $caption 参数(图片注释)
$sticker // 如果是 sticker 事件的话,该参数为一个数组,可以使用 $this->debug($sticker) 来查看结构
$message_id // 消息的 message_id
$from // 消息触发者
$chat // 消息触发源
$date // 消息触发时间

callback_query 事件

介绍

callback_query 事件是收到一条 callback 查询时触发的

参数表

$callback_data // callback 的数据内容
$callback_id // callback 的 id
$callback_from // callback 的触发者
$message_id // 原消息的 message_id
$from // 消息触发者
$chat // 消息触发源
$date // 消息触发时间

inline_query 事件

介绍

inline_query 事件是收到内联模式查询时触发的(请先确定 bot 已开启内联模式)

参数表

$query // inline 所查询的字符串
$offset // 偏移
$inline_id // inline 的 id
$from // 消息触发者

new_member、left_member 事件

介绍

分别为新成员加入和成员离开事件

参数表

// 仅演示 new_member 事件,如果是 left_member 事件的话
// 那么第一个参数应为 $left_member,即离开的成员
$new_member // 新加入的成员,拥有和消息触发者一样的数组
$message_id // 加入消息的 message_id
$from // 消息触发者
$chat // 消息触发源(其实就是所加入的群组)
$date // 消息触发时间

install、uninstall、enable、disable、settings 事件

介绍

插件的事件,分别为 被安装、被卸载、被启用、被禁用、设置界面

PS:如果是settings事件的话,需要直接输出 html 代码,如:

public function settings () {
    ?>
        Hello World!
        <script>
            function saveSettings () {
                // 实际上 saveSettings 应发出一个 ajax,配合下面的外部事件保存设置
                alert("你点击了保存设置");
            }
        </script>
    <?
}

外部事件

介绍

如果你希望外部触发插件的某个方法,你可以在插件 class 内声明方法(如 hello)

// 当外部请求到:
// /index.php/plugins/callback
// 并且 post 信息为:
// pcn=你的插件pcn&method=hello
// 就会输出“你好”
public function hello () {
    echo '你好';
}

PS:如果需要传递什么参数的话,以上的 post 信息还可以进行扩展,Tbo 不会更改传递的 post 信息