首页 > 解决方案 > 输入 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,但不知道该怎么做。

标签: telegramtelegram-botpython-telegram-bot

解决方案


text_message_handler = MessageHandler(Filters.text & (~Filters.command), call_model)

每当我的模型(call_model函数)返回适当的标签时,我想输入其中一个 ConversationHandlers,但不知道该怎么做。

call_model但是,您的处理程序回调是吗?回调无法确定处理程序是否被执行。

这是处理程序的工作。所以你可能应该实现一个自定义过滤器来使用,MessageHandler或者只是一个自定义处理程序,并将你的 NLP 逻辑放在那里。请参阅此页面了解有关自定义过滤器的详细信息,以及此页面Handler了解您需要为自定义处理程序实现的抽象类。


免责声明:我目前是python-telegram-bot


推荐阅读