这是我第一次制作电报机器人,尽管文档内容非常丰富,但是使用Updater / Dispatcher机制使我无法正常工作。
我尝试遵循在网上找到的多个教程,但是由于某种原因,我不明白为什么从未真正调用过我的处理程序。
我发现让Dispatcher实际调用我的函数的唯一方法是在add_handler_call中添加一个参数,该参数在我发现的各种教程中均未使用:
dispatcher.add_handler(CommandHandler("my", bot.handle_my_cmd))
不起作用,但dispatcher.add_handler(CommandHandler("my", Filters.all, bot.handle_my_cmd))
起作用,但仅适用于命令,不适用于常规消息。
class MyBot(Bot):
def __init__(self, token):
super(MyBot, self).__init__(token)
def handle_message(self, update):
print(f"Update: {update}")
def handle_my_cmd(self, update):
chat = update['chat']['id']
self.send_message(chat, f"My bot")
def register_handlers(bot, dispatcher):
dispatcher.add_handler(CommandHandler("my", bot.handle_my_cmd))
dispatcher.add_handler(MessageHandler(Filters.all, bot.handle_message))
def main():
mybot = MyBot(config['telegram_token']) # config is created elsewhere
updater = Updater(bot=mybot)
dispatcher = updater.dispatcher
register_handlers(mybot, dispatcher)
updater.start_polling(clean=True)
updater.idle()
if __name__ == "__main__":
main()
我在做什么错而导致我的函数无法调用?
为什么添加此过滤器参数只能解决命令问题?
预先感谢