Aiogram 3. Как научить бота понимать значения кубика dice?
После перехода с aiogram 2 на 3, перестал нормально работать код, конкретно бот больше не понимает значения кубика и что нужно делать если значение одно больше другого и наоборот.
Ошибка - cannot access local variable 'bot_data' where it is not associated with a value
Код:
@dp.message(Command("game"))
async def handler_game(message: types.Message):
await bot.send_message(message.from_user.id, f"Поехали, @{message.from_user.username}!")
await bot.send_dice(message.from_user.id)
bot_data = bot_data["dice"]["value"]
await bot.send_dice(message.from_user.id)
user_data = user_data["dice"]["value"]
if bot_data > user_data:
await bot.send_message(message.from_user.id, "Вы проиграли!")
elif bot_data < user_data:
await bot.send_message(message.from_user.id, "Вы победили!")
else:
await bot.send_message(message.from_user.id, "Запускай снова!")
Ответы (1 шт):
Автор решения: Pupsik666
→ Ссылка
Благодаря коллегами из aiogram сообщества в тг, ребята мне помогли и на версии 3.1.1. Необходимо писать так:
msg = await bot.send_dice(message.from_user.id)
value = msg.dice.value
await sleep(2)
msg = await bot.send_dice(message.from_user.id)
value2 = msg.dice.value
await sleep(3)
if value > value2:
await bot.send_message(message.from_user.id, "Вы проиграли!")
elif value < value2:
await bot.send_message(message.from_user.id, "Вы победили!")
else:
await bot.send_message(message.from_user.id, "Запускай снова!")