【问题标题】:Deleting replies from a telegram bot删除电报机器人的回复
【发布时间】:2018-11-27 11:58:58
【问题描述】:

我有一个用 Python 编写的电报机器人。它根据代码中提到的特定命令发送消息。我想在 X 秒后删除此机器人发送的回复。有删除消息的电报机器人API

https://api.telegram.org/botBOTID/deleteMessage?chat_id=?&message_id=?

要删除消息,我们需要 chat idmessage id。要获取机器人回复消息的聊天 ID消息 ID,我需要继续阅读所有消息(甚至来自用户)并找到这些 ID。这将增加机器人的大量开销。

有没有其他方法可以在不阅读所有消息的情况下找到这些id

【问题讨论】:

  • 你不能只得到最后的消息吗?
  • @AfloroaieRobert 如果该组有很多成员,它将有很多消息传入..
  • 嘿,您找到任何解决方案来删除 Supergroup 中的 Bot 消息了吗?

标签: python-3.x telegram telegram-bot python-telegram-bot


【解决方案1】:

在 nodeJs 中,我使用这些代码在 10 秒后删除 bot 发送的回复:

let TelegramBot = require('node-telegram-bot-api');
let bot = new TelegramBot(token, {polling: true});

bot.on('message', (msg) => {
    let chatId = msg.chat.id;
    let botReply = "A response from the bot that will removed after 10 seconds"
    bot.sendMessage(chatId ,botReply)
        .then((result) => { setTimeout(() => {
            bot.deleteMessage(chatId, result.message_id)
        }, 10 * 1000)})
        .catch(err => console.log(err))
}

【讨论】:

    【解决方案2】:

    这是Chat 对象。它包含聊天的标识符。

    这是Message 对象。它包含该消息的标识符和一个 Chat 对象,表示它所在的覆盖范围。

    sendMessage REST 函数在成功时返回您发送的消息。

    所以你这里的解决方案是存储你发送消息时得到的Message对象,然后使用存储对象(Message.message_idMessage.chat.id)中的参数调用delete api。

    关于 Python,您可以使用 pickle 模块将对象存储在文件中。

    【讨论】:

      猜你喜欢
      • 2022-11-02
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 2019-12-31
      • 2021-04-21
      • 1970-01-01
      • 2022-10-19
      相关资源
      最近更新 更多