【问题标题】:Telegraf JS: how can i clear history of a chat?Telegraf JS:如何清除聊天记录?
【发布时间】:2020-10-18 17:42:01
【问题描述】:

我如何清除聊天历史记录,在我的情况下是使用 Telegraf.js 的机器人聊天历史记录?我在 Telegram API 中看到有一种方法可以清除聊天历史记录:https://core.telegram.org/method/messages.deleteHistory

使用messages.deleteHistory(),但我在 Telegraf 文档中找不到任何内容。

那么我该如何使用 Telegraf 清除历史记录呢?

谢谢

【问题讨论】:

  • 另外,为了确认 delete_history 对机器人不可用,即使使用基于直接 mtproto(电报协议)的库,请查看 this documentation in telethon

标签: node.js telegram-bot telegram-api telegraf.js


【解决方案1】:

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

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

【讨论】:

  • 添加口头解释通常很有帮助
【解决方案2】:

Telegraf.js 在后台使用官方Telegram BOT Api(使用 HTTP 访问)。

messages.deleteHistory() 是一个核心API 方法(使用MTProto 协议访问)。另请注意,该方法只能由普通用户而不是机器人调用(即使您考虑使用基于 mtproto 的库来调用它)

换句话说,Bots 无法做到这一点,并且 HTTP bot API 中没有这种方法。你能做的最好的就是使用deleteMessage

使用此方法删除一条消息,包括服务消息,使用 以下限制:

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

【讨论】:

  • EHmmm..但我有时会看到机器人在完成所有事情后(也在 2 天后)删除所有聊天。或者当我开始播放时会删除所有消息,然后他们会发送消息。我大约 2 周前使用了一个并删除了所有(也从超过 2 天发送)。然后我使用wizardscenes,那么我怎样才能删除机器人发送的消息?
  • 嗯,这就是官方文档的内容。声明并注意我们在这里谈论的是 Telegraf(本质上是通过 HTTP Bot API 运行)。
  • 这些机器人很可能在一些 mtproto 库上运行,例如 telethonpyrogram 等。(因为它允许在电报客户端中使用 delete messages without the 48hrs restrictions as of 24 March, 2019)。但是您必须使用 mtproto 协议而不是我相信的 HTTP api(如我在答案中附加的文档中所述)
  • 啊,好的,谢谢,所以没有这样的javascript应用程序吗?我不懂PHP
  • 这些在 python 中,但在 JavaScript 中有几个替代方案,例如 mtproto-coreGramJs
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多