💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
>[info] 如何修改默认的 群聊/私聊核心 程序? 修改默认的加载第三方插件的通配符路径? ``` #警告请勿修改,否则无法使用云插件。 /config/injectApp ``` >[info] 修改当群友退群/被踢/加入群 执行动作? ``` app\script_group_event_v1\logic\WhenMemberBeKicked #被踢 app\script_group_event_v1\logic\WhenMemberJoining #加入群 app\script_group_event_v1\logic\WhenMemberLeave #自己退群 ``` >[info] 使用模板需要注意什么? ``` //需要手动 补齐绝对路径 ( 模块@文件夹/模板) View::fetch(' plug_group_pepper@adminPage/Test') ``` >[info] 群聊连接对象有什么? ``` 群聊传入的是 app\common\extend\GroupCommon 公共对象 ``` >[info] 获取当前发言的QQ以及群号码? ``` $this->conn->_qq ``` ``` $this->conn->_group ``` >[info] 如何自定义触发机器人特性? >[info] 如何获取 过滤 触发机器人特性后的 用户消息? ``` /config/jailbot 配置文件中 group_active_word=>'' //填写@代表 需要@机器人 ; //填写 ‘’代表不需要激活词 ; //填写 # abc 等 用户消息里 前缀需要为 激活词 的消息才能 激活 ``` ``` // 业务逻辑里使用 激活词判断是否需要处理本次群聊消息 if (!$this->conn->_cqAtBot) { //如果没有被AT 返回false return false; } //获取 过滤激活词后的 用户消息 $GroupMsg = trim($this->conn->_filterCqAtMsg); ``` 5. 如何保持 指令持久化? ``` 本框架使用数据库记录用户上一条指令的方式 保持持久化,群聊指令在数据库 prefix_qq_struct 中,私聊指令在prefix_private_struct中。 系统使用mysql5.7数据库,并且使用addition_json字段来保持持久化消息数据。 struct来代表下一个消息 将会执行哪个类?addition_json->process 将要执行的 步骤方法 ``` >[info] 简单例子 ``` //我们新建一个第三方群聊插件 <?php namespace app\plug_group_admin\logic; use app\common\extend\GroupCommon; use app\common\model\QqStruct; /** * Class ExmapleStructPlug * @package app\plug_group_admin\logic * @struct 插件例子 * @author 官方群管插件 * @user_hide true * @description 这里是 第三方 菜单插件的 描述文件。 */ class ExmapleStructPlug { public $conn; /** * ExmapleStructPlug constructor. * @param GroupCommon $groupCommon * 无论是 init还是 proccess_x 都会执行这个函数 * 主要是传入 conn连接池,可以操作 jailbot框架所有的操作 */ public function __construct(GroupCommon $groupCommon) { $this->conn = $groupCommon; } /** * 【第一次】 触发此插件后 执行的函数,只会执行一次, * 这里应该写导航语句的提示 */ public function init(): void { //把【持久化】过程调到下一步 finish ,这里是自定义函数 process_自定义 $qqStruct->addition_json->process = 'finish'; $qqStruct->addition_json->aaa = 'testVauleAaa'; //保存 持久化指令数据库 $qqStruct->save(); } /** * @param QqStruct $qqStruct * @throws \Exception * 【持久化】接上一次的用户继续 调用此 插件 * 【用户自定义】 上一次变更 process流程的函数名 */ public function process_finish(QqStruct $qqStruct): void { //获取上一个指令中记录的自定义参数 $qqStruct->addition_json->aaa; //结束任务!下次用户在AT机器人,就不会再来 继续执行这个插件了,需要重新开始 $qqStruct->delete(); } } ``` >[info] 自定义二次开发群聊插件需要注意什么? ``` 1:请勿修改 /config/injectApp的配置文件防止无法加载 2: 新建插件的模块命名必须为 /application/plug_group_* 3:群聊插件模块命名 防止其他冲突 最好是 plug_group_name_version 格式 4:群聊插件 /logic/中的 每个 插件对象 必须要有 class 注解,必须包含 /** * Class ExmapleStructPlug * @package app\plug_group_admin\logic * @struct 触发关键词不得重复 * @author 此插件对象的作者 * @description 插件的描述 */ class ExmapleStructPlug {} ``` >[info] 群聊传入的conn连接对象 大概可以做什么? ``` 目前conn群聊连接对象 包含有 属性对象 [消息QQ][消息群号][CQ码构造器] [消息ID] [机器人QQ] 连接对象 包含有 公共方法 [回复消息][撤回消息][踢出本群][踢人拉黑] [禁言][允许加群请求][发送图片][推荐名片] [群签到][设置管理员][AT全体][设置头衔] [发送地图][发送语音] ``` >[info] 如何获取群聊消息里用户 消息里第一个@的用户? ``` $qq = $this->conn->_cqAtTarget; ``` >[info] 机器人发送消息默认是snyc 同步发送,能不能改成 异步队列 ``` /config/jailbot中修改 'api_send_drive'=>'sysvmsg',//sysvmsg(需要 php think sysv 启动服务) sync ```