Python-telegram-bot - CommandLine Handler没有被调用

时间:2018-03-18 07:33:42

标签: python telegram telegram-bot python-telegram-bot

我创建了一个Python Telegram bot并注册了两个命令处理程序。问题是hello命令处理程序无法正常工作。

我尝试将该处理程序的组更改为group=2,但在使用hello时仍未调用/rtd。 无法弄清楚问题。

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()

1 个答案:

答案 0 :(得分:1)

这里的问题是您将hello函数原型的参数命名为错误。传递命令参数的参数名称必须args。您将其命名为cmd

参见这方面的文件: Screenshot of pass_args parameter documentation

来源:https://ptb.readthedocs.io/en/latest/telegram.ext.commandhandler.html

对于所有pass_*处理程序参数,此行为都是相同的。