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