mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-07-22 16:15:34 +08:00
更新下一个大版本,基本上算是重写了一遍吧~
This commit is contained in:
@@ -8,5 +8,83 @@
|
||||
|
||||
class APIHandler
|
||||
{
|
||||
|
||||
static function execute($cmd, $res = null) {
|
||||
if (!isset($cmd[0])) return;
|
||||
switch ($cmd[0]) {
|
||||
case "set_friend_add_request":
|
||||
$id = $cmd[1];
|
||||
$msg = "Hi~你好!";
|
||||
$msg .= "\n第一次见面请多关照!";
|
||||
CQUtil::sendPrivateMsg($id, $msg);
|
||||
break;
|
||||
case "get_friend_list":
|
||||
$friend = $res["data"][0]["friends"];
|
||||
$list = [];
|
||||
foreach ($friend as $k => $v) {
|
||||
$list[$v["user_id"]] = $friend[$k];
|
||||
}
|
||||
Buffer::set("friend_list", $list);
|
||||
Console::put(Console::setColor("已读取" . count(Buffer::get("friend_list")) . "个好友", "blue"));
|
||||
break;
|
||||
case "update_group_member_list":
|
||||
$group_id = $cmd[1];
|
||||
$info_data = $res["data"];
|
||||
Console::info(Console::setColor("Updating group $group_id members, it will take several minutes.", "yellow"));
|
||||
foreach ($info_data as $k => $v) {
|
||||
$s = new GroupMember($v["user_id"], CQUtil::getGroup($group_id), $v);
|
||||
CQUtil::getGroup($group_id)->setMember($v["user_id"], $s);
|
||||
$s->updateData();
|
||||
}
|
||||
break;
|
||||
case "update_group_member_info":
|
||||
$info_data = $res["data"];
|
||||
$group = $cmd[1];
|
||||
$user = $cmd[2];
|
||||
$g = CQUtil::getGroup($group);
|
||||
$member = $g->getMember($user);
|
||||
$member->setAttribute($info_data);
|
||||
$member->setCard($info_data["card"]);
|
||||
$member->setJoinTime($info_data["join_time"]);
|
||||
$member->setLastSentTime($info_data["last_sent_time"]);
|
||||
$member->setRole($info_data["role"]);
|
||||
Console::info("Updated group member information: " . $group . ":" . $user);
|
||||
break;
|
||||
case "update_group_info":
|
||||
$group = $res["data"];
|
||||
$current = $cmd[1];
|
||||
$list = [];
|
||||
foreach ($group as $k => $v) {
|
||||
$list[$v["group_id"]] = $group[$k];
|
||||
}
|
||||
if (!isset($list[$current]) && Buffer::array_key_exists("groups", $current)) {
|
||||
Buffer::unset("groups", $current);
|
||||
break;
|
||||
}
|
||||
$g = CQUtil::getGroup($current);
|
||||
$g->setGroupName($list[$current]["group_name"]);
|
||||
$g->setPrefix($list[$current]["prefix"]);
|
||||
break;
|
||||
case "get_group_member_list":
|
||||
$group_data = $res["data"];
|
||||
$ls = Buffer::get("group_list");
|
||||
$group_id = $cmd[1];
|
||||
$ls[$group_id]["member"] = $group_data;
|
||||
$group = new Group($group_id, $ls[$group_id]);
|
||||
Buffer::appendKey("groups", $group_id, $group);
|
||||
break;
|
||||
case "get_group_list":
|
||||
$group = $res["data"];
|
||||
$list = [];
|
||||
foreach ($group as $k => $v) {
|
||||
$list[$v["group_id"]] = $group[$k];
|
||||
CQUtil::sendAPI(["action" => "get_group_member_list", "params" => ["group_id" => $v["group_id"]]], ["get_group_member_list", $v["group_id"]]);
|
||||
}
|
||||
Buffer::set("group_list", $list);
|
||||
Console::put(Console::setColor("已读取" . count(Buffer::get("group_list")) . "个群", "blue"));
|
||||
break;
|
||||
case "get_version_info":
|
||||
Buffer::set("version_info", $res["data"]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,4 +49,30 @@ class Buffer
|
||||
if(!is_array((self::$data[$name] ?? 1))) return false;
|
||||
return in_array($value, self::$data[$name]);
|
||||
}
|
||||
|
||||
////////////预留部分,为redis更新作准备/////////////
|
||||
|
||||
/** @var string[] 为未来支持redis数据库做准备 */
|
||||
static $vars = [];
|
||||
static $ls = [];
|
||||
|
||||
static function _get(string $name){
|
||||
|
||||
}
|
||||
|
||||
static function _setString(string $key, string $value){
|
||||
|
||||
}
|
||||
|
||||
static function _setList(string $key, array $value){
|
||||
|
||||
}
|
||||
|
||||
static function _appendList(string $key, string $value){
|
||||
|
||||
}
|
||||
|
||||
static function _ping(){
|
||||
|
||||
}
|
||||
}
|
||||
@@ -12,12 +12,9 @@ class CQUtil
|
||||
{
|
||||
public static function loadAllFiles() {
|
||||
Console::debug("loading configs...");
|
||||
Buffer::set("su", DP::getJsonData("su.json"));//超级管理员用户列表
|
||||
if (count(Buffer::get("su")) < 1 && Framework::$super_user !== "") {
|
||||
Console::info("Added super user");
|
||||
Buffer::set("su", [Framework::$super_user]);
|
||||
}
|
||||
Buffer::set("mods", self::getMods());//加载模块列表
|
||||
Buffer::set("su", Framework::$super_user);//超级管理员用户列表
|
||||
|
||||
Buffer::set("mods", self::getMods());//加载的模块列表
|
||||
Buffer::set("user", []);//清空用户列表
|
||||
Buffer::set("time_send", false);//发送Timing数据到管理群
|
||||
Buffer::set("cmd_prefix", DP::getJsonData("config.json")["cmd_prefix"] ?? "");//设置指令的前缀符号
|
||||
@@ -26,11 +23,11 @@ class CQUtil
|
||||
|
||||
public static function saveAllFiles() {
|
||||
Console::info("Saving files...");
|
||||
DP::setJsonData("su.json", Buffer::get("su"));//保存超级管理员的QQ列表
|
||||
|
||||
//保存cmd_prefix(指令前缀)
|
||||
$config = DP::getJsonData("config.json");
|
||||
$config["cmd_prefix"] = Buffer::get("cmd_prefix");
|
||||
$config["super_user"] = Buffer::get("su");
|
||||
DP::setJsonData("config.json", $config);
|
||||
|
||||
//保存用户数据
|
||||
@@ -519,4 +516,73 @@ class CQUtil
|
||||
Buffer::$api->close();
|
||||
Buffer::$event->shutdown();
|
||||
}
|
||||
|
||||
/**
|
||||
* 此函数用于解析其他非消息类型事件,显示在log里
|
||||
* @param $req
|
||||
* @return string
|
||||
*/
|
||||
public static function executeType($req){
|
||||
switch($req["post_type"]){
|
||||
case "message":
|
||||
return "消息";
|
||||
case "event":
|
||||
switch($req["event"]){
|
||||
case "group_upload":
|
||||
return "群[".$req["group_id"]."] 文件上传:".$req["file"]["name"]."(".intval($req["file"]["size"] / 1024)."kb)";
|
||||
case "group_admin":
|
||||
switch($req["sub_type"]){
|
||||
case "set":
|
||||
return "群[".$req["group_id"]."] 设置管理员:".$req["user_id"];
|
||||
case "unset":
|
||||
return "群[".$req["group_id"]."] 取消管理员:".$req["user_id"];
|
||||
default:
|
||||
return "unknown_group_admin_type";
|
||||
}
|
||||
case "group_decrease":
|
||||
switch($req["sub_type"]){
|
||||
case "leave":
|
||||
return "群[".$req["group_id"]."] 成员主动退群:".$req["user_id"];
|
||||
case "kick":
|
||||
return "群[".$req["group_id"]."] 管理员[".$req["operator_id"]."]踢出了:".$req["user_id"];
|
||||
case "kick_me":
|
||||
return "群[".$req["group_id"]."] 本账号被踢出";
|
||||
default:
|
||||
return "unknown_group_decrease_type";
|
||||
}
|
||||
case "group_increase":
|
||||
return "群[".$req["group_id"]."] ".$req["operator_id"]." 同意 ".$req["user_id"]." 加入了群";
|
||||
default:
|
||||
return "unknown_event";
|
||||
}
|
||||
case "request":
|
||||
switch($req["request_type"]){
|
||||
case "friend":
|
||||
return "加好友请求:".$req["user_id"].",验证信息:".$req["message"];
|
||||
case "group":
|
||||
switch($req["sub_type"]){
|
||||
case "add":
|
||||
return "加群[".$req["group_id"]."] 请求:".$req["user_id"].",请求信息:".$req["message"];
|
||||
case "invite":
|
||||
return "用户".$req["user_id"]."邀请机器人进入群:".$req["group_id"];
|
||||
default:
|
||||
return "unknown_group_type";
|
||||
}
|
||||
default:
|
||||
return "unknown_request_type";
|
||||
}
|
||||
default:
|
||||
return "unknown_post_type";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回群的类
|
||||
* @param $group_id
|
||||
* @return Group|null
|
||||
*/
|
||||
static function getGroup($group_id){
|
||||
$d = Buffer::get("groups");
|
||||
return $d[$group_id] ?? null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user