feat(bot): add bot account ownership and balance

This commit is contained in:
2026-07-24 10:44:48 +05:00
parent 87385228ea
commit 8bd5c80693
22 changed files with 1008 additions and 393 deletions
+12 -8
View File
@@ -4,7 +4,6 @@ from aiogram import Router
from aiogram.types import Message
from aiogram.fsm.context import FSMContext
from bot.filters import AdminFilter
from bot.api.asf import get_all_bots, send_command
from bot.logging_utils import describe_user, get_logger
from bot.services.redeem import (
@@ -12,6 +11,7 @@ from bot.services.redeem import (
redeem_all_bots_keys,
redeem_single_bot_keys,
)
from bot.services.bot_accounts import list_user_bot_accounts
from bot.states import ConsoleFlow, RedeemFlow
@@ -26,7 +26,7 @@ router = Router()
logger = get_logger(__name__)
@router.message(ConsoleFlow.waiting_command, AdminFilter())
@router.message(ConsoleFlow.waiting_command)
async def handle_console_message(message: Message, state: FSMContext):
if not message.text:
await message.answer("Отправьте текстовую команду.")
@@ -97,11 +97,12 @@ async def handle_console_message(message: Message, state: FSMContext):
await message.answer(f"Ошибка: {error}")
@router.message(RedeemFlow.waiting_bot_keys, AdminFilter())
@router.message(RedeemFlow.waiting_bot_keys)
async def handle_single_bot_redeem(message: Message, state: FSMContext):
state_data = await state.get_data()
bot_name = state_data.get("bot_name")
account_id = state_data.get("account_id")
if not isinstance(bot_name, str) or not bot_name:
await message.answer("Контекст потерян, попробуйте еще раз.")
await state.clear()
@@ -126,7 +127,7 @@ async def handle_single_bot_redeem(message: Message, state: FSMContext):
await message.bot.edit_message_text(
text=format_bot_ui(bot_data),
reply_markup=bot_details_keyboard(
bot_name, bool(bot_data.get("HasMobileAuthenticator"))
account_id, bool(bot_data.get("HasMobileAuthenticator"))
),
disable_web_page_preview=True,
chat_id=chat_id,
@@ -195,7 +196,7 @@ async def handle_single_bot_redeem(message: Message, state: FSMContext):
await state.clear()
@router.message(RedeemFlow.waiting_all_keys, AdminFilter())
@router.message(RedeemFlow.waiting_all_keys)
async def handle_all_bots_redeem(message: Message, state: FSMContext):
state_data = await state.get_data()
@@ -210,8 +211,8 @@ async def handle_all_bots_redeem(message: Message, state: FSMContext):
if menu_message_id:
try:
await message.bot.edit_message_text(
text=get_asf_status_text(),
reply_markup=main_keyboard(),
text=get_asf_status_text(message.from_user.id),
reply_markup=main_keyboard(message.from_user.id),
chat_id=chat_id,
message_id=menu_message_id,
)
@@ -256,7 +257,10 @@ async def handle_all_bots_redeem(message: Message, state: FSMContext):
)
try:
await checking.edit_text(await redeem_all_bots_keys(keys))
accounts = await list_user_bot_accounts(message.from_user.id)
await checking.edit_text(
await redeem_all_bots_keys(keys, [account.bot_name for account in accounts])
)
except Exception as error:
logger.exception(