Top.Mail.Ru
Ответы

Помогите пожалуйста python aiogram

После написания текста "на что хотите поставить?" вылезает ошибка в коде стр22

from aiogram import Bot, Dispatcher, types, executor
from asyncio import sleep
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup


bot = Bot(token='')
dp = Dispatcher(bot)
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
markup = types.ReplyKeyboardMarkup()
boba_button = types.KeyboardButton("На победу")
biba_button = types.KeyboardButton("На проигрыш")
markup.row(boba_button, biba_button)
await bot.send_message(message.from_user.id,f'Привет, {message.from_user.username}! Начинаем игру!')
await sleep(1)
nbalance = int(1000)
await bot.send_message(message.from_user.id,f'Ваш баланс: {nbalance}$')
await bot.send_message(message.from_user.id,"На что хотите поставить?", reply_markup=markup)
response = await dp.message_handler('message')
vibor = response.text

if vibor == "Победа":
await bot.send_message(message.from_user.id, "Вы выбрали 'Победа'")
elif vibor == "На проигрыш":
await bot.send_message(message.from_user.id, "Вы выбрали 'На проигрыш'")
else:
await bot.send_message(message.from_user.id, "Неверный ввод")



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

Дополнен
По дате
По рейтингу
Аватар пользователя

я скоректировал ваш код, вот исправленый вариант:

123456789101112131415161718192021222324252627282930313233343536373839
 python 
from aiogram import Bot, Dispatcher, types, executor 
from asyncio import sleep 
from aiogram.contrib.fsm_storage.memory import MemoryStorage 
from aiogram.dispatcher import FSMContext 
from aiogram.dispatcher.filters.state import State, StatesGroup 
 
bot = Bot(token='YOUR_TOKEN') 
dp = Dispatcher(bot, storage=MemoryStorage()) 
 
class GameState(StatesGroup): 
    waiting_for_choice = State() 
 
@dp.message_handler(commands=['start']) 
async def start(message: types.Message): 
    markup = types.ReplyKeyboardMarkup() 
    boba_button = types.KeyboardButton("На победу") 
    biba_button = types.KeyboardButton("На проигрыш") 
    markup.row(boba_button, biba_button) 
    await bot.send_message(message.from_user.id,f'Привет, {message.from_user.username}! Начинаем игру!') 
    await sleep(1) 
    nbalance = int(1000) 
    await bot.send_message(message.from_user.id,f'Ваш баланс: {nbalance}$') 
    await bot.send_message(message.from_user.id,"На что хотите поставить?", reply_markup=markup) 
    await GameState.waiting_for_choice.set() 
 
@dp.message_handler(state=GameState.waiting_for_choice) 
async def set_choice(message: types.Message, state: FSMContext): 
    vibor = message.text 
    if vibor == "На победу": 
        await bot.send_message(message.from_user.id, "Вы выбрали 'Победа'") 
    elif vibor == "На проигрыш": 
        await bot.send_message(message.from_user.id, "Вы выбрали 'На проигрыш'") 
    else: 
        await bot.send_message(message.from_user.id, "Неверный ввод") 
    await state.finish() 
 
if __name__ == '__main__': 
    executor.start_polling(dp, skip_updates=True) 

- Добавлен
параметр `storage` в
Конструктор объекта `Dispatcher`, чтобы избежать ошибки, связанной с FSM.
- Определен
объект `Группа состояний" для обработки состояний в диалоге.
- Используется
параметр `state` в функции обработки сообщений для указания состояния разговора.
- Удалено использование объекта
`response` в функции обработчика сообщений и используется
объект `message` непосредственно для получения пользовательского выбора.
- Добавлена
функция `state.finish()` для обработки состояния окончания разговора.

Аватар пользователя
Просветленный

Рукожоп