from aiogram import F, Router, types
from aiogram.filters import Command
from aiogram.types import Message, CallbackQuery
from aiogram.fsm.state import State, StatesGroup
from aiogram.fsm.context import FSMContext
from handlers.handler import starting, help_cmd, start_game
from main import bot
# Определяем состояния
class Form(StatesGroup):
waiting_for_button = State()
count = 0
router = Router(name=__name__)
@router.message(Command("start"))
async def handle_start_command(message: Message):
await starting(message)
@router.message(Command("help"))
async def handle_help_command(message: Message):
await help_cmd(message)
@router.message(Command('game'))
async def handle_start_game_command(message: Message, state: FSMContext):
await start_game(message)
await message.answer("Нажмите на кнопку:", reply_markup=await get_keyboard())
await state.set_state(Form.waiting_for_button) # Устанавливаем состояние ожидания
async def get_keyboard():
keyboard = types.InlineKeyboardMarkup()
button1 = types.InlineKeyboardButton(text="Ответ 1", callback_data='button_callback_1')
button2 = types.InlineKeyboardButton(text="Ответ 2", callback_data='button_callback_2')
keyboard.add(button1, button2)
return keyboard
@router.callback_query(F.data == 'button_callback_1')
async def handle_button_1(callback: CallbackQuery, state: FSMContext):
global count
await callback.answer('Вы выбрали Ответ 1!')
count += 1
await state.clear() # Сбрасываем состояние
if count == 9:
print('its over')
@router.callback_query(F.data == 'button_callback_2')
async def handle_button_2(callback: CallbackQuery, state: FSMContext):
global count
await callback.answer('Вы выбрали Ответ 2!')
count += 1
await state.clear() # Сбрасываем состояние
if count == 9:
print('its over')
@router.callback_query(F.data == '2')
async def handle_answer_command(callback: CallbackQuery, state: FSMContext):
await callback.answer('Все неверно! Вы проходите дальше!')
# Обработчик для состояния ожидания нажатия кнопки
@router.callback_query(F.data.in_(['button_callback_1', 'button_callback_2']))
async def handle_button(callback: CallbackQuery, state: FSMContext):
if await state.get_state() == Form.waiting_for_button.state:
if callback.data == 'button_callback_1':
await handle_button_1(callback, state)
elif callback.data == 'button_callback_2':
await handle_button_2(callback, state)
else:
await callback.answer('Сейчас не время для нажатия кнопки!')
После того, как я запускаю и проверяю его по команде, он как не ждал, так и не ждет.
Вот роутеры:
from aiogram import F, Router, types
from aiogram.filters import Command
from aiogram.types import Message, CallbackQuery
from aiogram.fsm.state import State, StatesGroup
from aiogram.fsm.context import FSMContext
from handlers.handler import starting, help_cmd, start_game
from main import bot
# Определяем состояния
class Form(StatesGroup):
waiting_for_button = State()
count = 0
router = Router(name=__name__)
@router.message(Command("start"))
async def handle_start_command(message: Message):
await starting(message)
@router.message(Command("help"))
async def handle_help_command(message: Message):
await help_cmd(message)
@router.message(Command('game'))
async def handle_start_game_command(message: Message, state: FSMContext):
await start_game(message)
await message.answer("Нажмите на кнопку:", reply_markup=await get_keyboard())
await state.set_state(Form.waiting_for_button) # Устанавливаем состояние ожидания
async def get_keyboard():
keyboard = types.InlineKeyboardMarkup()
button1 = types.InlineKeyboardButton(text="Ответ 1", callback_data='button_callback_1')
button2 = types.InlineKeyboardButton(text="Ответ 2", callback_data='button_callback_2')
keyboard.add(button1, button2)
return keyboard
@router.callback_query(F.data == 'button_callback_1')
async def handle_button_1(callback: CallbackQuery, state: FSMContext):
global count
await callback.answer('Вы выбрали Ответ 1!')
count += 1
await state.clear() # Сбрасываем состояние
if count == 9:
print('its over')
@router.callback_query(F.data == 'button_callback_2')
async def handle_button_2(callback: CallbackQuery, state: FSMContext):
global count
await callback.answer('Вы выбрали Ответ 2!')
count += 1
await state.clear() # Сбрасываем состояние
if count == 9:
print('its over')
@router.callback_query(F.data == '2')
async def handle_answer_command(callback: CallbackQuery, state: FSMContext):
await callback.answer('Все неверно! Вы проходите дальше!')
# Обработчик для состояния ожидания нажатия кнопки
@router.callback_query(F.data.in_(['button_callback_1', 'button_callback_2']))
async def handle_button(callback: CallbackQuery, state: FSMContext):
if await state.get_state() == Form.waiting_for_button.state:
if callback.data == 'button_callback_1':
await handle_button_1(callback, state)
elif callback.data == 'button_callback_2':
await handle_button_2(callback, state)
else:
await callback.answer('Сейчас не время для нажатия кнопки!')