代码之家  ›  专栏  ›  技术社区  ›  rock321987

从电报机器人删除回复

  •  0
  • rock321987  · 技术社区  · 6 年前

    我有一个用Python编写的电报机器人。它根据代码中提到的特定命令发送消息。我想删除 答复 由这个机器人发送假设之后 几秒钟。有一个删除消息的telegram bot API

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

    删除我们需要的信息 聊天id 消息id . 为了得到 聊天id 消息id 在机器人回复的信息中,我需要继续阅读所有的信息(甚至是来自用户的)并找到这些id。这将增加机器人的大量开销。

    有别的办法找到这些吗 身份证 不看所有的信息?

    1 回复  |  直到 6 年前
        1
  •  0
  •   beppe9000    6 年前

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

    partial screenshot of chat object

    这是 Message 反对。它包含该消息的标识符和 聊天 对象,表示其所在的覆盖。

    partial screenshot of message object

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

    partial screenshot of sendMessage documentation

    所以你的解决办法是 消息 对象,然后使用存储对象中的参数调用delete api( Message.message_id Message.chat.id ).

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

        2
  •  0
  •   Hasan Aboudi    5 年前

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