>[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
```