删除电报机器人的回复

时间:2018-06-18 15:27:53

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

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

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

要删除邮件,我们需要聊天ID 邮件ID 。要获取机器人回复消息的聊天ID 消息ID ,我需要继续阅读所有消息(即使是来自用户)并找到这些ID'秒。这将增加机器人的大量开销。

有没有其他方法可以在不阅读所有消息的情况下找到这些 ID&#39>

2 个答案:

答案 0 :(得分:0)

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

partial screenshot of chat object

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

partial screenshot of message object

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

partial screenshot of sendMessage documentation

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

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

答案 1 :(得分:0)

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

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))
}