小编Mar*_*lli的帖子

python-telegram-bot 的自定义持久化类

我正在使用python-telegram-bot库开发一个简单的 Telegram 聊天机器人。我的机器人目前正在使用ConversationHandler来跟踪对话状态。

我想通过将对话状态存储在 MongoDB 数据库中来使对话持久化

我正在使用mongoenginepython 库与我的数据库进行通信。

通过阅读BasePersistence( https://python-telegram-bot.readthedocs.io/en/stable/telegram.ext.basepersistence.html )的文档,我了解到有必要使用自定义类扩展此类,我们称之为MongoPersistence,并覆盖以下方法:

  • get_conversations(name)
  • update_conversation(name, key, new_state)

文档没有指定dict返回的结构get_conversations(name),因此也很难理解如何实现update_conversation(name, key, new_state)

假设我有上面提到的类(store_user_data, store_chat_data,store_bot_data都设置为False因为我不想存储这些数据):

from telegram.ext import BasePersistence


class MongoPersistence(BasePersistence):

    def __init__(self):
        super(MongoPersistence, self).__init__(store_user_data=False,
                                               store_chat_data=False,
                                               store_bot_data=False)

    def get_conversations(self, name):
        pass

    def update_conversation(self, name, key, new_state):
        pass
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个类,以便从数据库中获取和保存我的对话状态?

python mongoengine telegram python-telegram-bot

4
推荐指数
1
解决办法
909
查看次数