telegram - 输入 ConversationHandler 忽略 entry_points
问题描述
我正在使用python-telegram-bot包装器来创建基于 NLP 的聊天机器人,我希望用户可以选择如何使用该机器人:
- 内联键盘按钮菜单
- 自然语言对话
对于第一个选项,我定义了几个 ConversationHandler,其中大多数都将 entry_points 定义为单个 CallbackQueryHandler:
location_handler = ConversationHandler(
entry_points=[
CallbackQueryHandler(
callback=nearest,
pattern=NEAREST_CB
)]
对于第二个选项,我使用的是 MessageHandler:
text_message_handler = MessageHandler(Filters.text & (~Filters.command), call_model)
每当我的模型(call_model
函数)返回适当的标签时,我想输入其中一个 ConversationHandlers,但不知道该怎么做。
解决方案
text_message_handler = MessageHandler(Filters.text & (~Filters.command), call_model)
每当我的模型(
call_model
函数)返回适当的标签时,我想输入其中一个 ConversationHandlers,但不知道该怎么做。
call_model
但是,您的处理程序回调是吗?回调无法确定处理程序是否被执行。
这是处理程序的工作。所以你可能应该实现一个自定义过滤器来使用,MessageHandler
或者只是一个自定义处理程序,并将你的 NLP 逻辑放在那里。请参阅此页面了解有关自定义过滤器的详细信息,以及此页面Handler
了解您需要为自定义处理程序实现的抽象类。
免责声明:我目前是python-telegram-bot