Files
ASF-Control-Bot/bot/handlers/redeem.py
T

59 lines
2.3 KiB
Python

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"
"<code>AAAAA-BBBBB-CCCCC\nDDDDD-EEEEE-FFFFF</code>",
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<code>{bot_name}</code>\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
)