- 资源详情
- 常见问题
- 用户评论(5)
站长评测:简单,但实用,基于google apps script创建,无需服务器
/*
功能:
删除群内所有历史消息,包括进群、退群的服务消息。
使用方法:
注册一个google帐号,在google apps script中新建一个脚本,复制代码并webhook到机器人即可。
布署成功后,先向机器人运行init命令建立msgid属性。删除完成后也可以使用此命令复位消息ID。
然后把机器人拉进需要删除历史消息的群,设为管理员,运行"删除历史消息"命令即可。
此机器人在群内会自动删除所有新产生的进、退群消息。
运行逻辑
机器人在群中获取到"删除历史消息"命令后得到最后一条消息ID,然后循环从1开始删除消息,直到最后一条消息ID。
因为GAS脚本运行最长时间为6分钟,所以设置了5分钟停止,可自行调整。如果消息过多,则等待执行完成后,重复删除命令即可。
脚本考虑到API的请求限制,未采用并发进程,稍微慢一点,但胜在稳定不会被黑名单。
作者:@mangsile 需要订制机器人请与我联系。
*/
const botToken = "https://api.telegram.org/bot" + "bot token" + "/";
const scriptProperties = PropertiesService.getScriptProperties();
const adminname = "mangsile"; //管理员用户名,必改
data = {"method": "post","contentType": 'application/json',"muteHttpExceptions": true,"payload": ""};
function doGet(e) {
return HtmlService.createHtmlOutput("Hello World!! No, this link should be hidden!!!");
}
function doPost(e) {
var body = JSON.parse(e.postData.contents);
preparePayload(body);
}
function Para_set(collection, data) {
scriptProperties.setProperty(collection, data);
return true;
}
function Para_get(collection) {
var units = scriptProperties.getProperty(collection);
return units;
}
function sendmsg (chatid,msg) {
var payload = {
"method": "sendMessage",
"chat_id": chatid,
"text": msg,
"parse_mode": "Markdown",
"disable_web_page_preview": false,
}
data.payload = JSON.stringify(payload);
UrlFetchApp.fetch(botToken,data);
}
function delmsg_callback(chatid,msgid) {
var payload = {
"method": "deleteMessage",
"chat_id": chatid,
"message_id": msgid,
}
data.payload = JSON.stringify(payload);
var response = UrlFetchApp.fetch(botToken,data);
return response;
}
//接收开始
function preparePayload(body) {
const username = body.message.from.username;
const chatid = body.message.chat.id + '';
const chatname = body.message.chat.username;
const chattitle = body.message.chat.title;
const chattype = body.message.chat.type;
var msgid = body.message.message_id;
if(body.message.text) var m = body.message.text.toLowerCase();
if (body.message.new_chat_member) {
delmsg(chatid,msgid);
}
if (body.message.left_chat_member) {
delmsg(chatid,msgid);
}
if (username != adminname) return;
if (m === "init") {
scriptProperties.setProperty('msgid',1);
sendmsg(chatid,"ID初始化成功");
return
}
if (m === "删除历史消息") {
sendmsg(chatid,"*脚本开始执行*");
var delmsgid = Para_get("msgid");
var starttime = new Date().getTime();
for(let i = delmsgid; i < msgid; i++){
var runtime = new Date().getTime();
if(runtime - starttime > 300000){
Logger.log("脚本已运行5分钟,自动停止");
sendmsg(chatid,"*脚本已运行5分钟,自动停止*");
return
}
var response = JSON.parse(delmsg_callback(chatid,i));
Para_set("msgid",i); //写入执行msgid到参数
if(response.ok == true){
Logger.log("删除成功:" + i);
}else{
switch(response.error_code){
case 400:
Logger.log("删除失败,未找到ID:" + i);
break;
case 403:
Logger.log("异常代码403:请求被禁止,停止执行");
rsh.append("debug",[detime,chatid,i,403,response]);
return;
case 429:
Logger.log("异常代码429:请求次数超出限制,等待10秒后执行");
Utilities.sleep(10*1000);
break;
default:
Logger.log("异常代码" + response.error_code + ":停止执行");
sendmsg(chatid,"❗️ 异常,自动停止");
return;
}
}
}
}
return
}
- 本站 电报机器人中文社区 的所有源码丶工具丶教程附件压缩包(如果文章没有特别说明解压密码的情况下)默认解压密码一律为:telegbor.org