From 60c75a269e7df80a4c2475ef97392a81c8694b22 Mon Sep 17 00:00:00 2001 From: super1207 <1875159423@qq.com> Date: Sun, 26 Nov 2023 14:06:09 +0800 Subject: [PATCH] fix image send and recv for Lagrange.Core --- src/MiraiCQ/MiraiCQ/center/event.cpp | 10 ++++++++++ src/MiraiCQ/MiraiCQ/config/config.cpp | 14 ++++++++++++++ src/MiraiCQ/MiraiCQ/config/config.h | 2 ++ src/MiraiCQ/MiraiCQ/mainprocess/mainprocess.cpp | 1 + src/MiraiCQ/MiraiCQ/net/OneBot/OneBotImpl.cpp | 3 ++- 5 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/MiraiCQ/MiraiCQ/center/event.cpp b/src/MiraiCQ/MiraiCQ/center/event.cpp index 0344e1c..6f4c393 100644 --- a/src/MiraiCQ/MiraiCQ/center/event.cpp +++ b/src/MiraiCQ/MiraiCQ/center/event.cpp @@ -394,6 +394,13 @@ static bool is_qq_url(const Json::Value & dat_json) if (url.find("c2cpicdw") != url.npos) { return true; } + std::string file = StrTool::get_str_from_json(dat_json, "file", ""); + if (file.find("gchat") != file.npos) { + return true; + } + if (file.find("c2cpicdw") != file.npos) { + return true; + } return false; } @@ -431,6 +438,9 @@ static bool deal_json_array(Json::Value & json_arr) if (md5_str == "") { md5_str = get_md5_from_imgurl(StrTool::get_str_from_json(dat_json, "url", "")); } + if (md5_str == "") { + md5_str = get_md5_from_imgurl(StrTool::get_str_from_json(dat_json, "file", "")); + } url = "https://gchat.qpic.cn/gchatpic_new/0/0-0-" + md5_str + "/0?term=2"; } else { diff --git a/src/MiraiCQ/MiraiCQ/config/config.cpp b/src/MiraiCQ/MiraiCQ/config/config.cpp index f79bc9c..538bde8 100644 --- a/src/MiraiCQ/MiraiCQ/config/config.cpp +++ b/src/MiraiCQ/MiraiCQ/config/config.cpp @@ -120,3 +120,17 @@ std::string Config::get_name() } return name; } + +std::string Config::get_is_support_multi_ws() +{ + std::string config_path = PathTool::get_exe_dir() + "config\\"; + PathTool::create_dir(config_path); + std::string config_file = config_path + "config.ini"; + std::string is_support_multi_ws = StrTool::get_str_from_ini(config_file, "Setting", "is_support_multi_ws", ""); + if (is_support_multi_ws == "") + { + WritePrivateProfileStringA("Setting", "is_support_multi_ws", this->is_support_multi_ws.c_str(), config_file.c_str()); + return this->is_support_multi_ws; + } + return is_support_multi_ws; +} diff --git a/src/MiraiCQ/MiraiCQ/config/config.h b/src/MiraiCQ/MiraiCQ/config/config.h index b2f3e44..75bcf90 100644 --- a/src/MiraiCQ/MiraiCQ/config/config.h +++ b/src/MiraiCQ/MiraiCQ/config/config.h @@ -15,6 +15,7 @@ class Config std::string get_access_token() ; bool set_access_token(const std::string& access_token); std::string get_name(); + std::string get_is_support_multi_ws(); private: Config(); ~Config(); @@ -24,5 +25,6 @@ class Config std::string http_url = "http://localhost:8080"; std::string adapter = "onebotv11"; std::string name = ""; + std::string is_support_multi_ws = "true"; }; diff --git a/src/MiraiCQ/MiraiCQ/mainprocess/mainprocess.cpp b/src/MiraiCQ/MiraiCQ/mainprocess/mainprocess.cpp index 16ff961..595537a 100644 --- a/src/MiraiCQ/MiraiCQ/mainprocess/mainprocess.cpp +++ b/src/MiraiCQ/MiraiCQ/mainprocess/mainprocess.cpp @@ -65,6 +65,7 @@ static bool login(LOGIN_INFO* login_info) net->set_config("access_token", login_info->access_token); net->set_config("verifyKey", Config::get_instance()->get_verifyKey()); net->set_config("http_url", Config::get_instance()->get_http_url()); + net->set_config("is_support_multi_ws", Config::get_instance()->get_is_support_multi_ws()); if (!net->connect()) { std::string str = StrTool::to_utf8("网络连接错误"); diff --git a/src/MiraiCQ/MiraiCQ/net/OneBot/OneBotImpl.cpp b/src/MiraiCQ/MiraiCQ/net/OneBot/OneBotImpl.cpp index 426af74..5789655 100644 --- a/src/MiraiCQ/MiraiCQ/net/OneBot/OneBotImpl.cpp +++ b/src/MiraiCQ/MiraiCQ/net/OneBot/OneBotImpl.cpp @@ -6,6 +6,7 @@ #include "../../tool/StrTool.h" #include "../../tool/TimeTool.h" #include "../../tool/AutoDoSth.h" +#include "../../config/config.h" using namespace std; @@ -250,7 +251,7 @@ MiraiNet::NetStruct OneBotNetImpl::call_fun(NetStruct senddat, int timeout,bool auto send_json = Json::FastWriter().write(*api_json); // MiraiLog::get_instance()->add_debug_log("OnebotImpl", "send_json_size:" + std::to_string(send_json.size())); // 超过50kb的信息建立新的连接来发送 - if ((send_json.size() > 1024 * 50) && (in_new_net == false)) + if (get_config("is_support_multi_ws") == "true" && (send_json.size() > 1024 * 50) && (in_new_net == false)) { auto new_net = MiraiNet::get_instance(this->get_config("net_type")); if (!new_net)