forked from FOSS/ASF-Control-Bot
244 lines
7.8 KiB
Python
244 lines
7.8 KiB
Python
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")]
|
|
]
|
|
)
|