NodeJS Telegraf JS:如何清除聊天记录?

y4ekin9u  于 2022-12-03  发布在  Node.js
关注(0)|答案(3)|浏览(138)

我如何清除聊天历史记录,在我的情况下与Telegraf.js的聊天机器人历史记录?我在Telegram API中看到,有一种方法可以清除聊天历史记录:https://core.telegram.org/method/messages.deleteHistory
但我在Telegraf文件上找不到任何东西。
那么我该如何用Telegraf来清除历史呢?
谢谢你

yvgpqqbh

yvgpqqbh1#

我试过这样的办法,但还是不够。

bot.command('delete', (ctx) =>{
let k = 0;
for(let i = 0; i <= 100; i++ ){
    k =  ctx.message.message_id-i;
    ctx.deleteMessage(k)
}
hfyxw5xn

hfyxw5xn2#

Telegraf.js在后台使用官方的Telegram BOT Api(通过HTTP访问)。
messages.deleteHistory()是一个核心API方法(使用MTProto协议访问)。还要注意,该方法只能由Regular Users调用,而不能由Bot调用(即使您考虑使用基于mtproto的库来调用它)
换句话说,Bot无法做到这一点,HTTP bot API中也没有这样的方法,您最多只能使用deleteMessage
使用此方法可以删除消息(包括服务消息),但具有以下限制:

  • 只有在48小时内发送的邮件才能被删除。
  • 私人聊天中的骰子消息只有在超过24小时前发送才能删除。
  • Bot可以删除私人聊天、群组和超级群组中的传出消息。
  • Bot可以删除私人聊天中的传入消息。
  • 被授予can_post_messages权限的bot可以删除通道中的传出消息。
  • 如果bot是某个组的管理员,它可以删除该组中的任何邮件。
  • 如果bot在超级组或通道中具有can_delete_messages权限,则可以删除其中的任何消息。成功时返回True。
nbnkbykc

nbnkbykc3#

bot.command('delete', async (ctx) => {
    let i = 0;
    while(true) {
        try {
            await ctx.deleteMessage(ctx.message.message_id - i++);
        } catch(e) {
            break;
        }
    }
}

相关问题