Как отследить сообщения, на которые отвечает человек?

У меня имеется бот на базе Aiogram 3 c использованием router.

Мне необходимо, чтобы бот в группе мог принимать и обрабатывать сообщения ТОЛЬКО при Reply на сообщение бота.

К примеру, бот создал игру, и туда вошли два игрока. Игроки отправляют кубики - но бот должен обработать сообщения только при Reply на сообщение о создании игры. Как такое реализовать?


Ответы (1 шт):

Автор решения: Black Square

Можно что-то подобное сделать


from aiogram import Dispatcher, Bot, F
from aiogram.filters import CommandStart
from aiogram.types import Message

from config import BOT_TOKEN


bot = Bot(token=BOT_TOKEN, parse_mode="HTML")
dp = Dispatcher()


game_messages = []


@dp.message(CommandStart())
async def start_game(message: Message):
    game_started_message = await message.answer("Game started")
    game_messages.append(game_started_message.message_id)


@dp.message(F.reply_to_message)
async def got_answer(message: Message):
    if message.reply_to_message.message_id in game_messages:
        await message.answer(f"Got reply to game start message -> {message.text}")


if __name__ == '__main__':
    dp.run_polling(bot)

F.reply_to_message - это фильтр которые пропускает только те сообщение которые отвечают на другие (больше информации тут)

→ Ссылка