Представим ситуацию, когда пользователь отправляет команду /random, ожидая в ответ случайное число. Однако, чтобы избежать повторения значения при неоднократной отправке команды, необходимо реализовать механизм, который будет следить за уникальностью последнего отправленного числа.
Для начала необходимо установить aiogram, используя pip install aiogram
Далее, приступим к написанию кода бота.
from aiogram import Bot, Dispatcher, executor, types
import random
import os
API_TOKEN = os.getenv('API_TOKEN')
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
last_number = {}
@dp.message_handler(commands=['random'])
async def send_random_number(message: types.Message):
user_id = message.from_user.id
if user_id not in last_number or last_number[user_id] is None:
new_number = random.randint(1, 100)
else:
new_number = last_number[user_id]
while new_number == last_number[user_id]:
new_number = random.randint(1, 100)
last_number[user_id] = new_number
await message.reply(f"Ваше случайное число: {new_number}")
if name == 'main':
executor.start_polling(dp, skip_updates=True)
— Хранение последнего числа: В примере используется словарь last_number, где ключом является user_id — уникальный идентификатор пользователя, а значением — последнее отправленное пользователю число. Это позволяет отслеживать последнее число для каждого пользователя индивидуально.
— Проверка и генерация числа: В функции send_random_number сначала проверяется, отправлялось ли пользователю число ранее. Если нет, генерируется новое. Если же число было отправлено, запускается цикл, который генерирует новое число до тех пор, пока оно не окажется отличным от последнего отправленного. Таким образом, пользователь каждый раз получает уникальное значение.
— Взаимодействие с пользователем: функция message.reply отправляет сообщение непосредственно в ответ на команду пользователя, делая интерактив с ботом более привлекательным и понятным.
— Асинхронность: aiogram построен на асинхронных вызовах, что делает обработку запросов более эффективной и позволяет вашему боту одновременно обрабатывать множество запросов без значительной потери производительности.
Реализация предотвращения повторения текста в ответах на команды в Telegram-боте, написанном на aiogram, позволяет создавать более динамичное взаимодействие с пользователем и увеличивает полезность бота. В данном примере был рассмотрен лишь один из способов достижения данной цели — с помощью простой проверки на уникальность и генерации нового значения в случае необходимости. Применение таких методов позволяет повысить интерес к боту и сделать его использование более разнообразным и интерактивным.