From e9023f760cb885a3aee0450446f905dfd031e8c4 Mon Sep 17 00:00:00 2001 From: super1207 <1875159423@qq.com> Date: Thu, 21 Dec 2023 20:49:20 +0800 Subject: [PATCH] some fix --- src/botconn/mod.rs | 8 +++++--- src/botconn/onebot115.rs | 14 +------------- src/redlang/cqexfun.rs | 3 --- 3 files changed, 6 insertions(+), 19 deletions(-) diff --git a/src/botconn/mod.rs b/src/botconn/mod.rs index 25ad52f..6502e13 100644 --- a/src/botconn/mod.rs +++ b/src/botconn/mod.rs @@ -30,17 +30,19 @@ lazy_static! { pub async fn call_api(platform:&str,self_id:&str,json:&mut serde_json::Value) -> Result> { let mut bot_select = None; + let platform_t = platform.to_owned(); + let self_id_t = self_id.to_owned(); // 挑选出对应的bot for bot in &*G_BOT_MAP.read().await { - if bot.1.read().await.get_platform().contains(&platform.to_owned()) && bot.1.read().await.get_self_id().contains(&self_id.to_owned()) { + if bot.1.read().await.get_platform().contains(&platform_t) && bot.1.read().await.get_self_id().contains(&self_id_t) { bot_select = Some(bot.1.clone()); } } // 使用挑选出来的bot发送消息 if bot_select.is_some() { - return bot_select.unwrap().read().await.call_api(platform, self_id, json).await; + return bot_select.unwrap().read().await.call_api(&platform_t, &self_id_t, json).await; } - cq_add_log_w(&format!("no such bot:{platform},{self_id}")).unwrap(); + cq_add_log_w(&format!("no such bot:platform:`{platform}`,self_id:`{self_id}`")).unwrap(); return Ok(serde_json::json!("")); } diff --git a/src/botconn/onebot115.rs b/src/botconn/onebot115.rs index 974c86a..32f0d08 100644 --- a/src/botconn/onebot115.rs +++ b/src/botconn/onebot115.rs @@ -109,7 +109,7 @@ impl BotConnectTrait for OneBot115Connect { cq_add_log_w(&format!("收到数据:{}",myself.to_string())).unwrap(); let bot_arr = myself.get("data").ok_or("data not found")?.as_array().ok_or("data not array")?; for bot in bot_arr { - if let Some(self_id) = bot.get("self_id") { + if let Some(self_id) = bot.get("bot_id") { self.self_ids.write().unwrap().insert(self_id.as_str().ok_or("self_id not string")?.to_string()); } if let Some(platform) = bot.get("platform") { @@ -134,7 +134,6 @@ impl BotConnectTrait for OneBot115Connect { self.stop_tx = Some(stoptx); // 这里使用弱引用,防止可能的循环依赖 - let self_id_ptr = Arc::>>::downgrade(&self.self_ids); let is_stop = Arc::::downgrade(&self.is_stop); tokio::spawn(async move { loop { @@ -155,18 +154,7 @@ impl BotConnectTrait for OneBot115Connect { continue; } - // 设置self_id - let self_id = read_json_str(&json_dat, "self_id"); - if self_id != "" { - if let Some(val) = self_id_ptr.upgrade() { - val.write().unwrap().insert(self_id); - } - else{ - break; - } - } // 获得echo - //let echo = read_json_str(&json_dat, "echo").to_owned(); let post_type = read_json_str(&json_dat, "post_type").to_owned(); tokio::spawn(async move { if post_type == "" { // 是api回复 diff --git a/src/redlang/cqexfun.rs b/src/redlang/cqexfun.rs index 3351dbc..6702c68 100644 --- a/src/redlang/cqexfun.rs +++ b/src/redlang/cqexfun.rs @@ -20,9 +20,6 @@ pub fn get_app_dir(pkg_name:&str) -> Result> fn get_platform(self_t:&RedLang) -> String{ let platform = self_t.get_exmap("机器人平台"); - if *platform == "" { - return "onebot11".to_string(); - } return (*platform).to_owned(); }