Задать вопрос
@kaka888
C, C++, Qt, Python, Flask, aiogram, MySQL, Redis..

Как установить состояние определённому пользователю?

Делаю телеграм-бота на Python aiogram 3. Бот по типу Дайвинчика. Это мой первый бот.
Когда текущий пользователь лайкает анкету другого пользователя, бот отправляет текстовое сообщение пользователю, которого лайкнули:
async def like(tg_id_1: int, tg_id_2: int) -> None:
    """
    :param tg_id_1: The one who liked
    :param tg_id_2: The one who is liked
    """
    await bot.send_message(
        tg_id_2,
        'Кому-то понравилась твоя анкета! Заканчивай с вопросом выше и посмотрим кто это'
    )
    # Здесь надо каким-то образом установить состояние (FSMContext) пользователю с ID tg_id_2
    # при том, что бот в данный момент работает с пользователем с ID tg_id_1


Как установить состояние (FSMContext) другому пользователю, а не текущему?
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@kaka888 Автор вопроса
C, C++, Qt, Python, Flask, aiogram, MySQL, Redis..
Решил проблему благодаря ответу Михаила Кростелева в аналогичном вопросе.

# from aiogram.fsm.storage.base import StorageKey
# from aiogram.fsm.context import FSMContext

# Получаем контекст нужного нам пользователя
storage_key = StorageKey(
    bot_id=bot.id, chat_id=tg_id_2, user_id=tg_id_2
)
other_user_context = FSMContext(storage=storage, key=storage_key)

# Устанавливаем состояние указанному ранее пользователю
await other_user_context.set_state(MyState.state_x)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы