Можно ли настроить бота на aiogram так, чтобы он отвечал только на сообщения, в которых содержатся определенные ключевые слова каждое пятое сообщение?

Как можно изменить данный код так, чтобы бот отвечал на каждое пятое сообщение (или любое другое сообщение, кроме первого), содержащее в себе ключевые слова из списка wordsbot? Опишите изменения, которые нужно внести в код. Благодарю заранее.
  • 25 апреля 2024 г. 18:00
Ответы на вопрос 2
Для того чтобы изменить код так, чтобы бот отвечал на каждое пятое сообщение (или любое другое сообщение, кроме первого), содержащее ключевые слова из списка wordsbot, нужно внести следующие изменения:

1. Создать список ключевых слов wordsbot, например:
```python
wordsbot = ['ключевое слово1', 'ключевое слово2', 'ключевое слово3']
```

2. Изменить обработчик сообщений таким образом, чтобы бот отвечал на каждое пятое сообщение (или любое другое сообщение, кроме первого), содержащее ключевые слова из списка wordsbot:
```python
from aiogram import Bot, Dispatcher, types
from aiogram import executor

bot = Bot(token='TOKEN')
dp = Dispatcher(bot)

counter = 0

@dp.message_handler()
async def echo(message: types.Message):
    global counter
    if counter != 0 and counter % 5 == 0 and any(word in message.text for word in wordsbot):
        await message.answer('Ответ на сообщение')
    counter += 1

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
```

Эти изменения позволят боту отвечать на каждое пятое сообщение (или любое другое сообщение, кроме первого), содержащее в себе одно из ключевых слов из списка wordsbot.
Посмотрите в сторону FSM. В функцию хендлера добавляется параметр state, куда вы запишете номер попытки для конкретного пользователя. Как только счётчик попыток дойдёт до пяти, отвечайте.
Похожие вопросы