forked from FOSS/ASF-Control-Bot
103 lines
3.9 KiB
Python
103 lines
3.9 KiB
Python
from aiogram import Router
|
|
from aiogram.types import CallbackQuery
|
|
|
|
from bot.filters import AdminCallbackFilter
|
|
from bot.logging_utils import describe_user, get_logger
|
|
from bot.services.inventory import build_inventory_menu, render_inventory_page
|
|
from bot.ui.keyboards import back_keyboard
|
|
|
|
router = Router()
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
@router.callback_query(
|
|
lambda c: c.data and c.data.startswith("inventory_"), AdminCallbackFilter()
|
|
)
|
|
async def inventory_menu(callback: CallbackQuery) -> None:
|
|
user = describe_user(callback.from_user.id)
|
|
bot_name = callback.data.replace("inventory_", "")
|
|
logger.info("Открыто меню инвентаря: %s bot=%s", user, bot_name)
|
|
|
|
await callback.answer()
|
|
await callback.message.edit_text("Проверка инвентаря...")
|
|
|
|
text, keyboard = await build_inventory_menu(bot_name)
|
|
if "пуст" in text.lower():
|
|
logger.info("Показано пустое меню инвентаря: %s bot=%s", user, bot_name)
|
|
keyboard = back_keyboard(f"bot_{bot_name}")
|
|
|
|
await callback.message.edit_text(text, reply_markup=keyboard)
|
|
|
|
|
|
@router.callback_query(
|
|
lambda c: c.data and c.data.startswith("inv_cs2_"), AdminCallbackFilter()
|
|
)
|
|
async def cs2_inventory(callback: CallbackQuery) -> None:
|
|
user = describe_user(callback.from_user.id)
|
|
bot_name = callback.data.replace("inv_cs2_", "")
|
|
logger.info("Открыт CS2-инвентарь: %s bot=%s", user, bot_name)
|
|
|
|
await callback.answer()
|
|
await callback.message.edit_text("Загрузка инвентаря...")
|
|
|
|
text, keyboard = await render_inventory_page(bot_name, "cs2", 730, 2, 0)
|
|
if text is None:
|
|
logger.warning("Не удалось загрузить CS2-инвентарь: %s bot=%s", user, bot_name)
|
|
await callback.message.edit_text("Не удалось загрузить инвентарь")
|
|
return
|
|
|
|
await callback.message.edit_text(text, reply_markup=keyboard)
|
|
|
|
|
|
@router.callback_query(
|
|
lambda c: c.data and c.data.startswith("inv_steam_"), AdminCallbackFilter()
|
|
)
|
|
async def steam_inventory(callback: CallbackQuery) -> None:
|
|
user = describe_user(callback.from_user.id)
|
|
bot_name = callback.data.replace("inv_steam_", "")
|
|
logger.info("Открыт Steam-инвентарь: %s bot=%s", user, bot_name)
|
|
|
|
await callback.answer()
|
|
await callback.message.edit_text("Загрузка инвентаря...")
|
|
|
|
text, keyboard = await render_inventory_page(bot_name, "steam", 753, 6, 0)
|
|
if text is None:
|
|
logger.warning(
|
|
"Не удалось загрузить Steam-инвентарь: %s bot=%s", user, bot_name
|
|
)
|
|
await callback.message.edit_text("Не удалось загрузить инвентарь")
|
|
return
|
|
|
|
await callback.message.edit_text(text, reply_markup=keyboard)
|
|
|
|
|
|
@router.callback_query(
|
|
lambda c: c.data and c.data.startswith("invpage|"), AdminCallbackFilter()
|
|
)
|
|
async def inventory_page(callback: CallbackQuery) -> None:
|
|
user = describe_user(callback.from_user.id)
|
|
_, inv_type, bot_name, page_value = callback.data.split("|")
|
|
logger.info(
|
|
"Открыта страница инвентаря: %s bot=%s type=%s page=%s",
|
|
user,
|
|
bot_name,
|
|
inv_type,
|
|
page_value,
|
|
)
|
|
await callback.answer()
|
|
app_id, context_id = (730, 2) if inv_type == "cs2" else (753, 6)
|
|
text, keyboard = await render_inventory_page(
|
|
bot_name, inv_type, app_id, context_id, int(page_value)
|
|
)
|
|
if text is None:
|
|
logger.warning(
|
|
"Не удалось загрузить страницу инвентаря: %s bot=%s type=%s page=%s",
|
|
user,
|
|
bot_name,
|
|
inv_type,
|
|
page_value,
|
|
)
|
|
await callback.message.edit_text("Не удалось загрузить инвентарь")
|
|
return
|
|
await callback.message.edit_text(text, reply_markup=keyboard)
|