我在尝试删除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)
答案 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)