电报机器人无法删除消息

时间:2018-04-10 11:16:49

标签: python telegram-bot

我在尝试删除Message时收到以下错误:

2018-04-10 13:58:57,646 (__init__.py:292 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: message can\'t be deleted"}']"

为什么不能删除邮件?

import config
import telebot

bot = telebot.TeleBot(config.token)

@bot.message_handler(content_types=["text"])
def repeat_all_messages(message):
  bot.send_message(message.chat.id, 'Hello World')
  bot.delete_message(message.chat.id, message.message_id)


if __name__ == '__main__':
 bot.polling(none_stop=True)

3 个答案:

答案 0 :(得分:2)

检查Message。关于机器人删除邮件有以下limitations

  
      
  • 只有在48小时前发送邮件时才能删除邮件。
  •   
  • Bots可以删除组和超组中的外发邮件。
  •   
  • 授予can_post_messages权限的机器人可以删除频道中的外发邮件。
  •   
  • 如果机器人是某个组的管理员,它可以删除那里的任何消息。
  •   
  • 如果机器人在超级组或频道中具有can_delete_messages权限,则可以删除任何消息。   成功时返回True。
  •   

答案 1 :(得分:1)

您操作机器人的处理程序仅处理用户发送的消息,而不是机器人

message功能中的repeat_all_messages()对象是用户发送的消息,在这种情况下,您只是回显它。我会尝试做以下事情:

由于您知道您发送了下一封邮件,因此您可以将message_id增加1,因为您的邮件ID与用户发送的ID相距+1,即:

@bot.message_handler(content_types=["text"])
def repeat_all_messages(message):
    bot.send_message(message.chat.id, 'Hello World')
    bot.delete_message(message.chat.id, message.message_id + 1)

答案 2 :(得分:-1)

时间改变了

现在将像这样

import config
import telebot

bot = telebot.TeleBot(config.token)

@bot.message_handler(content_types=["text"])
def repeat_all_messages(message):
  msg = bot.send_message(message.chat.id, 'Hello World')
  bot.edit_message_text("I AM Deleting Now",msg.chat_id,msg.message_id)
  bot.delete_message(message.chat.id, msg.message_id)


if __name__ == '__main__':
 bot.polling(none_stop=True)