Пользовательский класс персистентности для python -telegram-bot - PullRequest
0 голосов
/ 21 марта 2020

Я занимаюсь разработкой простого чат-бота Telegram с использованием библиотеки python-telegram-bot. Мой бот в настоящее время использует ConversationHandler для отслеживания состояния разговора.

Я хочу сделать разговор постоянным, сохраняя состояние разговора в базе данных MongoDB .

Я использую библиотеку mongoengine для python для связи с моей БД.

Читая документацию для 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

Как я могу реализовать этот класс, чтобы мое состояние разговора было быть извлеченным и сохраненным из БД?

...