我有一个用Python编写的电报机器人。它按照代码中提到的特定命令发送消息。我想在 X 秒之后删除此机器人发送的回复。有一个电报机器人API删除消息
https://api.telegram.org/botBOTID/deleteMessage?chat_id=?&message_id=?
要删除邮件,我们需要聊天ID 和邮件ID 。要获取机器人回复消息的聊天ID 和消息ID ,我需要继续阅读所有消息(即使是来自用户)并找到这些ID'秒。这将增加机器人的大量开销。
有没有其他方法可以在不阅读所有消息的情况下找到这些 ID&#39> ?
答案 0 :(得分:0)
这是Chat
对象。它包含聊天的标识符。
这是Message
对象。它包含该消息的标识符和一个Chat
对象,代表该消息所在的覆盖范围。
sendMessage
REST函数返回成功发送的消息。
因此,这里的解决方案是存储在发送消息时获得的Message
对象,然后使用存储的对象(Message.message_id
和Message.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))
}