Да, возможно заставить бота на aiogram отвечать исключительно на каждое пятое сообщение с ключевыми словами. Для этого необходимо реализовать проверку каждого входящего сообщения, считать количество сообщений с ключевыми словами и отвечать только на пятое сообщение.
Примерно код, который можно использовать для реализации данного функционала:
1. Создаем переменную для счетчика сообщений с ключевыми словами:
keywords_counter = 0
2. В функции-обработчике сообщений проверяем каждое входящее сообщение на наличие ключевых слов и увеличиваем счетчик, если найдены ключевые слова:
from aiogram import Bot, Dispatcher, types from aiogram.utils import executor bot = Bot(token="YOUR_TOKEN") dp = Dispatcher(bot) @dp.message_handler() async def on_message(message: types.Message): global keywords_counter keywords = ["ключевое_слово1", "ключевое_слово2", "ключевое_слово3"] if any(keyword in message.text.lower() for keyword in keywords): keywords_counter += 1 if keywords_counter % 5 == 0: await message.answer("Ответ на каждое пятое сообщение с ключевыми словами") if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)
3. В данном примере бот будет отвечать на каждое пятое сообщение, в котором найдено хотя бы одно из ключевых слов. Помимо изменения ключевых слов в переменной keywords
, может потребоваться доработка логики обработки сообщений в зависимости от специфики проекта.
Это один из способов реализации поставленной задачи, и его можно модифицировать и улучшить в зависимости от требований проекта.