365审核要多久

QQ消息防撤回(基于go-cqhttp)

QQ消息防撤回(基于go-cqhttp)

很多时候别人消息撤回了,我们就看不到别人有意思的消息了所以,我们来写一个防撤回接口,让群里的消息无处遁寻

1 首先我们看到api接口,这个重要!!!!2 我们在去查看消息体*私人聊天撤回

{"post_type":"notice","notice_type":"friend_recall","time":1676811122,"self_id":2673893724,"message_id":-319033038,"user_id":3096407768}

* 群聊天撤回

{"post_type":"notice","notice_type":"group_recall","time":1676809270,"self_id":2673893724

group_id":682671449,"user_id":3096407768,"operator_id":3096407768,"message_id":-1460439864}

我们发现私人消息和群聊消息的notice_typ不同,operator_id和user_id相同时就是群成员自己撤回的消息,如果不同,就是管理员撤回的,operator_id就是操作者的id,因此在群聊operator_id和user_id相同就是群成员自己撤回的,

if (notice_type === "group_recall" && operator_id === user_id) 私人聊天

else if (notice_type === "friend_recall")所以我们群成员撤回的消息时我们需要把message_id拿到

3.我们封装一个函数请求/get_msg接口,拿到消息//此函数是根据message_id获取消息,用于撤回消息查询

exports.getmessage = async (types, message_id, id) => {

try {

const res = axios({

url: "http://127.0.0.1:5000/get_msg",

method: "get",

params: {

message_id

}

})

return res

} catch (e) {

await Sendmessage.SendMessage(types, `获取撤回消息出错了:${e}`, id)

return ""

}

}4 /get_msg接口 需要我们的message_id,就是我们每条消息id,我们需要获取每条消息,我们拿到message_id就可以拿到撤回的数据、开始写逻辑

传入 notice_type, operator_id, message_id, user_id, group_id四个参数

//防撤回

exports.banrecall = async ({notice_type, operator_id, message_id, user_id, group_id}) => {

if (notice_type === "group_recall" && operator_id === user_id) {

const message1 = await getmessage.getmessage("group", message_id, user_id)

await SendMessage.SendMessage("group", `[CQ:at,qq=${user_id}]撤回消息:\n ${message1.data.data.message}`, user_id)

} else if (notice_type === "friend_recall") {

const message2 = await getmessage.getmessage("private", message_id, user_id)

await SendMessage.SendMessage("private", `[CQ:at,qq=${user_id}]撤回消息:\n${message2.data.data.message}`, user_id)

}

}结果如下:

成功啦

相关推荐

365审核要多久 埃及國家足球隊
beat365网址官网网站 辂车 古代第一豪车的盛与衰
365bet体育在线比分 WIFI 全球2.4G及5G信道一览表