更新下一个大版本,基本上算是重写了一遍吧~

This commit is contained in:
jerry
2018-06-03 15:40:28 +08:00
parent 0890a9bf6c
commit cfef2620ef
20 changed files with 906 additions and 260 deletions

View File

@@ -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;
}
}
}

View File

@@ -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(){
}
}

View File

@@ -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;
}
}