MiraiTravel 的 easyMirai 组件与 webhook 组件(五)

简介

MiraiTravel 框架基本介绍

MiraiTravel 框架是基于MiraiEz 的 Mirai-api-http 插件的一个PHP框架。可以通过 Http 协议与 Mirai 通信,以实现让 Mirai 进行指定操作的一个 PHP 框架。因为 MiraiTravel 是基于 Mirai-api-http 的,而Mirai-api-http 又是 Mirai 的一个插件。所以只有 Mirai 支持的操作, MiraiTravel 才能进行。

CSDN MiraiTravel 专栏地址 https://blog.csdn.net/apple_53792700/category_12176569.html

跟着专栏进行,你一定可以让你的QQ机器人拥有你想要的功能。

MiraiTravel Component 系统

MiraiTravel Component System 是 MiraiTravel 的组件系统。
组件系统是MiraiTravel的重要组成部分。组件一般用来丰富QQObj的方法,使QQBot的开发更加简便。

组件 easyMirai 就是一个很好了例子,他给QQBot提供了比 send_xxx_message 更方便的 reply_message 方法。使得无论是群消息,还是好友消息。都可以使用 reply_message 这一个方法来发送消息。而不是 QQObj 自带的 send_friend_messagesend_group_message 方法。

组件 webhook 也是MiraiTravel组件的重要一员。他与easyMirai相辅相成。共同组成了webhook 体系。

利用组件进行开发

我们在你的QQ机器人脚本中的init函数中打开 easyMiraiwebhook 组件。

function init()
{
     $this->open_component("easyMirai", "V0.1.1");
     $this->open_component("webhook", "V0.1.1");
 }

这样你就赋予了你的QQBot这些组件提供的方法。
我们现在来实现一个功能:
好友给QQ机器人发送你好时,QQ机器人回复 : 你好呀!

webhook 提供了不同类型消息分离转发的能力。什么意思呢?
就是当收到好友消息的时候webhook组件就会调用 webhook_friend_message 方法。
当收到群消息的时候webhook组件就会调用 webhook_group_message 方法。等等。
所以实现这个功能我们只需要QQBot中定义一个方法 :
webhook_friend_message 。最好带一个参数 ($webhookMessage) 。如果有参数的话,会把webhook的消息原封不动的传入。
我们拿到原封不动的消息格式应该是与 mirai-api-http 的好友消息一致。
官方文档 : https://docs.mirai.mamoe.net/mirai-api-http/api/MessageType.html
具体如下:

{
    "type": "FriendMessage",
    "sender": {
        "id": 123,
        "nickname": "",
        "remark": ""
    },
    "messageChain": [] // 数组,内容为下文消息类型
}

所以我们要拿到消息链应该在$webhookMessage[messageChain] 中。
MiraiTravel 中提供了解析和构造消息链的对象 MessageChain 。利用这个对象可以很方便的对消息链进行构造与解析。
我们需要获取消息链中的所有文字,所以我们可以把我们收到的消息链传入MessageChain中,并且使用MessageChain中的方法 get_all_plain 来获取所有文字。传入 true 会把所有文字拼接起来,拼接成一个字符串。不传入的话就返回数组。
回复消息可以用 QQBot自带的方法send_friend_message但是这个方法所需的参数太过复杂。所以我们还是使用 easyMirai组件提供的方法,replyMessage。原本这里面只能传消息链的,但是刚刚我对该组件进行了更新,现在直接传入字符串也可,他会自动把字符串转成messageChain。
具体代码如下:

function webhook_friend_message($webhookMessage)
{
    $messageChain = new MessageChain();
    $messageChain->set_message_chain($webhookMessage['messageChain']);
    $message = $messageChain->get_all_plain(true);
    if($message === "你好"){
    	$this->reply_message("你好呀");
    }
}

代码截图:
请添加图片描述
效果如下:
在这里插入图片描述

👋都看到这里了,还不快点个关注?


✍️本文作者为 > 【谢玄.】 Mr-XieXuan < 于 2022/2/1/22:19发布于 CSDN 。

📧E-mail: [ Mr_Xie_@outlook.com ]
⌨️GitHub: [ https://github.com/MR-XieXuan }
🔍个人私站: [ https://main.mrxie.xyz/ ]
---且行且珍惜 ---

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢玄.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值