from aiogram import Router from aiogram.types import CallbackQuery from aiogram.fsm.context import FSMContext from bot.logging_utils import describe_user, get_logger from bot.services.bot_accounts import get_owned_bot from bot.states import RedeemFlow from bot.ui.keyboards import back_keyboard router = Router() logger = get_logger(__name__) @router.callback_query(lambda c: c.data == "redeem_keys") async def redeem_keys_menu(callback: CallbackQuery, state: FSMContext) -> None: user = describe_user(callback.from_user.id) logger.info("Открыт режим активации ключей по всем ботам: %s", user) await callback.answer() await callback.message.edit_text( "Отправьте ключ Steam для активации\n\n" "Можно отправить сразу несколько ключей.\n\n" "Пример:\n" "AAAAA-BBBBB-CCCCC\nDDDDD-EEEEE-FFFFF", reply_markup=back_keyboard(), ) await state.set_state(RedeemFlow.waiting_all_keys) await state.update_data(menu_message_id=callback.message.message_id) @router.callback_query(lambda c: c.data and c.data.startswith("redeem_bot_")) async def redeem_bot_menu(callback: CallbackQuery, state: FSMContext) -> None: user = describe_user(callback.from_user.id) try: account = await get_owned_bot(callback.from_user.id, int(callback.data.replace("redeem_bot_", ""))) except ValueError: account = None if account is None: await callback.answer("Бот не найден или вам не принадлежит", show_alert=True) return bot_name = account.bot_name logger.info( "Открыт режим активации ключей для одного бота: %s bot=%s", user, bot_name ) await callback.answer() await callback.message.edit_text( f"Отправьте ключ Steam для активации на аккаунте:\n{bot_name}\n\n" "Можно отправить сразу несколько ключей.", reply_markup=back_keyboard(f"bot_{account.id}"), ) await state.set_state(RedeemFlow.waiting_bot_keys) await state.update_data( bot_name=bot_name, account_id=account.id, menu_message_id=callback.message.message_id )