from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup from bot.ui.formatters import get_bot_status_icon from bot.config import ADMIN_ID def main_keyboard(user_id: int | None = None) -> InlineKeyboardMarkup: keyboard = [ [InlineKeyboardButton(text="👤 Профиль", callback_data="profile")], [InlineKeyboardButton(text="🤖 Боты", callback_data="bots")], [InlineKeyboardButton(text="🔑 Активация ключей", callback_data="redeem_keys")], ] if user_id == ADMIN_ID: keyboard.insert( 0, [InlineKeyboardButton(text="🆙 Обновить", callback_data="refresh")], ) keyboard.extend( [ [ InlineKeyboardButton( text="🤵 Админ-панель", callback_data="admin_panel" ) ], ], ) return InlineKeyboardMarkup(inline_keyboard=keyboard) def back_keyboard(callback_data: str = "back") -> InlineKeyboardMarkup: return InlineKeyboardMarkup( inline_keyboard=[ [InlineKeyboardButton(text="🔙 Назад", callback_data=callback_data)] ] ) def admin_keyboard() -> InlineKeyboardMarkup: return InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="🔍 Найти пользователя", callback_data="admin_lookup" ) ], [InlineKeyboardButton(text="💲 Цена слота", callback_data="admin_price")], [InlineKeyboardButton(text="📁 Плагины", callback_data="plugins")], [InlineKeyboardButton(text="💻 Консоль", callback_data="console")], [ InlineKeyboardButton( text="♻ Перезапустить ASF", callback_data="restart_asf_confirm" ) ], [InlineKeyboardButton(text="🔙 Назад", callback_data="back")], ] ) def admin_profile_keyboard(user_id: int) -> InlineKeyboardMarkup: return InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="💲 Изменить баланс", callback_data=f"admin_balance:{user_id}" ) ], [InlineKeyboardButton(text="🔙 Назад", callback_data="admin_panel")], ] ) def games_keyboard(account_id: int, is_enabled: bool) -> InlineKeyboardMarkup: text = "Остановить накрутку CS2" if is_enabled else "⌚ Накрутить часы CS2" return InlineKeyboardMarkup( inline_keyboard=[ [InlineKeyboardButton(text=text, callback_data=f"farm|{account_id}|730")], [InlineKeyboardButton(text="🔙 Назад", callback_data=f"bot_{account_id}")], ] ) def bots_keyboard(bots: list[tuple[int, str, dict]]) -> InlineKeyboardMarkup: keyboard = [] for account_id, name, bot in bots: status = get_bot_status_icon(bot) loaded = bool(bot.get("BotName")) and bool(bot.get("SteamID")) callback_data = f"bot_{account_id}" if loaded else "bot_loading" keyboard.append( [InlineKeyboardButton(text=f"{status} {name}", callback_data=callback_data)] ) keyboard.extend( [ [InlineKeyboardButton(text="⬆️ Загрузить конфиг", callback_data="upload")], [InlineKeyboardButton(text="🔙 Назад", callback_data="back")], ] ) return InlineKeyboardMarkup(inline_keyboard=keyboard) def bot_details_keyboard( account_id: int, has_mobile_authenticator: bool ) -> InlineKeyboardMarkup: keyboard = [] if has_mobile_authenticator: keyboard.append( [InlineKeyboardButton(text="🔐 2FA", callback_data=f"2fa_{account_id}")] ) keyboard.append( [ InlineKeyboardButton( text="⌚ Накрутка часов", callback_data=f"games_{account_id}" ) ] ) keyboard.append( [ InlineKeyboardButton( text="🔑 Активировать ключ", callback_data=f"redeem_bot_{account_id}" ) ] ) keyboard.append( [ InlineKeyboardButton( text="📦 Инвентарь", callback_data=f"inventory_{account_id}" ) ] ) keyboard.append([InlineKeyboardButton(text="🔙 Назад", callback_data="bots")]) return InlineKeyboardMarkup(inline_keyboard=keyboard) def twofa_keyboard(account_id: int, has_confirmations: bool) -> InlineKeyboardMarkup: keyboard = [] if has_confirmations: keyboard.append( [ InlineKeyboardButton( text="Подтверждения", callback_data=f"confirm_list_{account_id}" ) ] ) keyboard.append( [InlineKeyboardButton(text="🔙 Назад", callback_data=f"bot_{account_id}")] ) return InlineKeyboardMarkup(inline_keyboard=keyboard) def confirmations_keyboard(account_id: int) -> InlineKeyboardMarkup: return InlineKeyboardMarkup( inline_keyboard=[ [ InlineKeyboardButton( text="Подтвердить всё", callback_data=f"confirm_all_{account_id}" ) ], [InlineKeyboardButton(text="🔙 Назад", callback_data=f"2fa_{account_id}")], ] ) def confirm_action_keyboard( confirm_data: str, cancel_data: str ) -> InlineKeyboardMarkup: return InlineKeyboardMarkup( inline_keyboard=[ [InlineKeyboardButton(text="Да", callback_data=confirm_data)], [InlineKeyboardButton(text="Нет", callback_data=cancel_data)], ] ) def inventory_menu_keyboard( account_id: int, cs2_count: int, steam_count: int ) -> InlineKeyboardMarkup: keyboard = [] if cs2_count: keyboard.append( [ InlineKeyboardButton( text=f"CS2 ({cs2_count})", callback_data=f"inv_cs2_{account_id}" ) ] ) if steam_count: keyboard.append( [ InlineKeyboardButton( text=f"Steam ({steam_count})", callback_data=f"inv_steam_{account_id}", ) ] ) keyboard.append( [InlineKeyboardButton(text="🔙 Назад", callback_data=f"bot_{account_id}")] ) return InlineKeyboardMarkup(inline_keyboard=keyboard) def inventory_page_keyboard( inventory_type: str, account_id: int, page: int, total_pages: int ) -> InlineKeyboardMarkup: nav = [] if page > 0: nav.append( InlineKeyboardButton( text="◀", callback_data=f"invpage|{inventory_type}|{account_id}|{page - 1}", ) ) if page < total_pages - 1: nav.append( InlineKeyboardButton( text="▶", callback_data=f"invpage|{inventory_type}|{account_id}|{page + 1}", ) ) keyboard = [nav] if nav else [] keyboard.append( [InlineKeyboardButton(text="🔙 Назад", callback_data=f"inventory_{account_id}")] ) return InlineKeyboardMarkup(inline_keyboard=keyboard) def console_keyboard() -> InlineKeyboardMarkup: return InlineKeyboardMarkup( inline_keyboard=[ [InlineKeyboardButton(text="🔙 Назад", callback_data="admin_panel")] ] ) def delete_message_keyboard() -> InlineKeyboardMarkup: return InlineKeyboardMarkup( inline_keyboard=[ [InlineKeyboardButton(text="Удалить", callback_data="delete_msg")] ] )