Python-telegram-bot - 未调用命令行处理程序
Python-telegram-bot - CommandLine Handler not getting invoked
我创建了一个 Python Telegram 机器人并注册了两个命令处理程序。问题是 hello
命令处理程序不工作。
我尝试将该处理程序的组更改为 group=2
,但当我使用 /rtd
时仍然没有调用 hello
。
无法找出问题。
def mybot():
print("dispatcher created.")
updater = Updater(token=my_token)
dispatcher = updater.dispatcher
dispatcher.add_error_handler(error_callback)
dispatcher.add_handler(CommandHandler('start', start))
dispatcher.add_handler(CommandHandler('rtd', hello, pass_args=True))
dispatcher.add_handler(MessageHandler(Filters.command, unknown))
print("handlers added.")
updater.start_polling()
updater.idle()
pass
def hello(bot, update, cmd):
print("hello handler", cmd)
pass
def start(bot, update):
bot.sendMessage(chat_id=update.message.chat_id, text="bot start!")
pass
def unknown(bot, update):
bot.send_message(chat_id=update.message.chat_id, text="unknown stuff.")
pass
def error_callback(bot, update, error):
try:
raise error
except TelegramError:
print("Telegram Error")
if __name__ == '__main__':
print("bot started.")
mybot()
这里的问题是你把hello
函数原型的参数命名错了。传递命令参数的参数名称必须为args
。您将其命名为 cmd
。
查看这方面的文档:
来源:https://ptb.readthedocs.io/en/latest/telegram.ext.commandhandler.html
此行为对于所有 pass_*
处理程序参数都是相同的。
我创建了一个 Python Telegram 机器人并注册了两个命令处理程序。问题是 hello
命令处理程序不工作。
我尝试将该处理程序的组更改为 group=2
,但当我使用 /rtd
时仍然没有调用 hello
。
无法找出问题。
def mybot():
print("dispatcher created.")
updater = Updater(token=my_token)
dispatcher = updater.dispatcher
dispatcher.add_error_handler(error_callback)
dispatcher.add_handler(CommandHandler('start', start))
dispatcher.add_handler(CommandHandler('rtd', hello, pass_args=True))
dispatcher.add_handler(MessageHandler(Filters.command, unknown))
print("handlers added.")
updater.start_polling()
updater.idle()
pass
def hello(bot, update, cmd):
print("hello handler", cmd)
pass
def start(bot, update):
bot.sendMessage(chat_id=update.message.chat_id, text="bot start!")
pass
def unknown(bot, update):
bot.send_message(chat_id=update.message.chat_id, text="unknown stuff.")
pass
def error_callback(bot, update, error):
try:
raise error
except TelegramError:
print("Telegram Error")
if __name__ == '__main__':
print("bot started.")
mybot()
这里的问题是你把hello
函数原型的参数命名错了。传递命令参数的参数名称必须为args
。您将其命名为 cmd
。
查看这方面的文档:
来源:https://ptb.readthedocs.io/en/latest/telegram.ext.commandhandler.html
此行为对于所有 pass_*
处理程序参数都是相同的。