Я занимаюсь разработкой простого чат-бота 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
Как я могу реализовать этот класс, чтобы мое состояние разговора было быть извлеченным и сохраненным из БД?