diff --git a/docs/detailref/README.md b/docs/detailref/README.md index c088d48..3f88ed9 100644 --- a/docs/detailref/README.md +++ b/docs/detailref/README.md @@ -2506,6 +2506,17 @@ onebot事件json对应的RedLang对象。 返回与消息ID有关的当前包的脚本发送的消息的消息ID数组(因内存条很贵,所以最多得到 5分钟以内的数据)。 +### 脚本输出-增加ID + +【脚本输出-增加ID@消息ID】 + +给当前消息添加相关的消息ID。 + +专门用于【OB调用】之后手动添加消息ID。 + +**注意**:这是一个实验性质的较底层的命令,用法很有可能会在之后的版本中发生变化(可能删除) + + ### 积分 【积分】 diff --git a/src/redlang/cqexfun.rs b/src/redlang/cqexfun.rs index 5e53e98..914a78e 100644 --- a/src/redlang/cqexfun.rs +++ b/src/redlang/cqexfun.rs @@ -1021,6 +1021,30 @@ pub fn init_cq_ex_fun_map() { return Ok(Some(self_t.build_arr(ret_vec))); } }); + + add_fun(vec!["脚本输出-增加ID"],|self_t,params|{ + let src_msg_id = self_t.get_exmap("消息ID"); // self_t.get_param(params, 0)?; + let to_add_msg_id = self_t.get_param(params, 0)?; + let self_id = self_t.get_exmap("机器人ID"); + let key = format!("{}|{}|{}",self_t.pkg_name,self_id,src_msg_id); + let mut lk = G_SCRIPT_RELATE_MSG.write()?; + let val_opt = lk.get_mut(&key); + if val_opt.is_none() { + let tm = SystemTime::now().duration_since(std::time::UNIX_EPOCH)?.as_secs(); + lk.insert(key, ScriptRelatMsg{ + self_id:(*self_id).to_owned(), + msg_id_vec:[to_add_msg_id].to_vec(), + create_time:tm + }); + return Ok(Some("".to_owned())); + }else{ + let val = val_opt.unwrap(); + val.msg_id_vec.push(to_add_msg_id); + return Ok(Some("".to_owned())); + } + }); + + add_fun(vec!["积分-增加"],|self_t,params|{ let key1 = self_t.get_exmap("群ID"); let group_id = format!("{}",key1);