Как отследить сообщения, на которые отвечает человек?
У меня имеется бот на базе 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 - это фильтр которые пропускает только те сообщение которые отвечают на другие (больше информации тут)