【发布时间】:2017-09-18 11:58:16
【问题描述】:
我用 Python-Telegram-Bot 框架构建了一个电报机器人。我将它添加到一个组并管理该组中的机器人。
机器人代码:
from telegram.ext import Updater, MessageHandler, CommandHandler, Filters
updater = Updater(token='TOKEN')
dispatcher = updater.dispatcher
def sticker_method(bot, update):
update.message.delete()
def sticker_delete():
dispatcher.add_handler(MessageHandler(Filters.sticker, sticker_method))
updater.start_polling()
updater.idle()
def sticker_undelete():
dispatcher.remove_handler(MessageHandler(Filters.sticker, sticker_method))
start_command = CommandHandler('start', sticker_delete)
dispatcher.add_handler(start_command)
notdelete_command = CommandHandler('notdelete', sticker_undelete)
dispatcher.add_handler(notdelete_command)
updater.start_polling()
updater.idle()
群创建者发送bot命令/start后,bot会删除群成员发给群的贴纸。
此外,当群组创建者命令/notdelete 将其发送给机器人时,机器人不应删除成员发送给群组的贴纸。
但是机器人不工作;当群组创建者向机器人发送群组命令/start 时,它不会删除发送到群组的机器人贴纸。
你认为问题是机器人不工作???
代码没有给出任何错误,但正如我所说,机器人不起作用。
【问题讨论】:
-
您是否尝试删除过去的贴纸消息或创建者发送“开始”命令后将出现的贴纸消息?因为现在看起来你想做第二个。此外,您不需要两次
.start_polling()和.idle()。我会尝试不同的方法:如果创建者发送命令start,则保存布尔值 START = True。如果创建者发送notdelete设置 START = False。然后将MessageHandler(Filters.sticker, sticker_method))移出方法,以便过滤所有贴纸并在 START = True 时检查该方法。如果是这样,删除当前消息 -
@Endogen 我不明白你在说什么,因为我不会读或写英文,请用你自己的方法修改代码。
标签: python python-telegram-bot