- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想使用ConversationHandler在我的机器人中。至少,它需要三个参数:
class telegram.ext.ConversationHandler(entry_points, states, fallbacks)
据我所知,入口点是对话处理程序的触发器,然后每个状态都可以执行自己的处理程序,并且 based on fallbacks definition ,如果某个状态的所有处理程序都返回 false
,则触发回退。
好的,因此,处理程序会返回一些内容。但处理程序是一个对象,一个类的实例。
基于this example ,寻找 new_alarm_handler
的示例。
处理程序如何返回值? (他们似乎返回了回调函数结果)。
对话的当前状态在哪里?它似乎无法访问,但却是最后执行的处理程序的最后结果。是吗?如果不是,那么我必须做什么才能改变对话中的当前状态?
因此,当达到某个状态时,将执行其处理程序列表(作为 arg 传递的字典 states
中的值)。但作为一个列表,它可能不止一个,因此可能有多个返回状态。如何管理?
最佳答案
ConversationHandler 存储当前 state
字典中的对话,名为 conversations
,键是一个名为 conversation_key
的实体。它是一个元组,由聊天 ID、用户 ID 和消息 ID 组成(其中一些可能会丢失,这是由 per_chat
、 per_user
和 per_message
bool 属性定义的)。
这里conversations
访问得到state
在check_update
方法(进一步解释):
https://github.com/python-telegram-bot/python-telegram-bot/blob/2cde878d1e5e0bb552aaf41d5ab5df695ec4addb/telegram/ext/conversationhandler.py#L248
对话的状态不适合手动访问。
当用户向机器人发送消息时,Updater
收到Update
来自 Telegram 的对象并将其传递到其 Dispatcher
。 Dispatcher
有已注册的列表Handler
物体,他们的check_update
方法按照添加顺序进行调用。 check_update
要么返回 False
或None
如果不应处理更新,或者它返回一些对象,然后将其传递给 handle_update
方法。
ConversationHandler
继承自Handler
它本身和它有其他Handler
对象作为其 states
中的值字典。它还具有 check_update
和handle_update
被覆盖。它的check_update
获取当前对话 state
(参见上面的链接)并调用 check_update
所有处理程序的方法 state
。如果全部返回False
它对 fallbacks
中的处理程序执行相同的操作列表。如果他们的所有检查也返回 False
它什么也不做。
如果其中一个处理程序应处理该事件,则该对象的 check_update
返回值传递给ConversationHadler
的handle_update
方法。它调用被解雇的 Handler
的handle_update
方法,该方法又调用在其创建时定义的回调函数。其结果设置为新的 state
这段对话在 conversations
字典。
根据 ConversationHandler 文档字符串:
To change the state of conversation, the callback function of a handler must return the new state after responding to the user. If it does not return anything (returning ``None`` by default), the state will not change.
关于python - 如何在 python-telegram-api 的 ConversationHandler 中管理当前状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53194950/
我正在使用 This ConversationHandler Script作为我的程序的基础。 如何从以前的状态中检索用户的答案?例如,当用户被问及他们的简历时,我如何打印他们的性别(这是被问到的第一
使用 python-telegram-bot ,我有一个运行的机器人,其设置与 other examples 非常相似.另一方面,我有并行进程,允许我定期向与机器人交互的用户发送消息。并行进程使用以下
我想使用ConversationHandler在我的机器人中。至少,它需要三个参数: class telegram.ext.ConversationHandler(entry_points, stat
Python-telegram-bot这是 HTTP Telegram Bot API 包装器具有 telegram.ext.ConversationHandler模块及其功能是: “通过管理四个其他
我是一名优秀的程序员,十分优秀!