Archived
feat(bot): add bot account ownership and balance
This commit is contained in:
+36
-13
@@ -4,7 +4,7 @@ from aiogram import Router
|
||||
from aiogram.types import CallbackQuery
|
||||
|
||||
from bot.states import twofa_tasks
|
||||
from bot.filters import AdminCallbackFilter
|
||||
from bot.services.bot_accounts import get_owned_bot
|
||||
from bot.logging_utils import describe_user, get_logger
|
||||
from bot.services.twofa import auto_update_2fa, stop_twofa_task
|
||||
from bot.api.asf import accept_confirmations, get_confirmations
|
||||
@@ -18,7 +18,6 @@ logger = get_logger(__name__)
|
||||
lambda c: c.data
|
||||
and c.data.startswith("2fa_")
|
||||
and not c.data.startswith("2fa_refresh_"),
|
||||
AdminCallbackFilter(),
|
||||
)
|
||||
async def twofa_handler(callback: CallbackQuery) -> None:
|
||||
await callback.answer()
|
||||
@@ -28,7 +27,13 @@ async def twofa_handler(callback: CallbackQuery) -> None:
|
||||
describe_user(callback.from_user),
|
||||
)
|
||||
return
|
||||
bot_name = callback.data.replace("2fa_", "")
|
||||
try:
|
||||
account = await get_owned_bot(callback.from_user.id, int(callback.data.replace("2fa_", "")))
|
||||
except ValueError:
|
||||
account = None
|
||||
if account is None:
|
||||
await callback.answer("Бот не найден или вам не принадлежит", show_alert=True); return
|
||||
bot_name = account.bot_name
|
||||
message_id = callback.message.message_id
|
||||
logger.info(
|
||||
"Пользователь %s открыл 2FA для бота %s",
|
||||
@@ -38,9 +43,9 @@ async def twofa_handler(callback: CallbackQuery) -> None:
|
||||
await stop_twofa_task(message_id)
|
||||
await callback.message.edit_text(
|
||||
f"🔐 {bot_name}\n\nЗагрузка 2FA...",
|
||||
reply_markup=back_keyboard(f"bot_{bot_name}"),
|
||||
reply_markup=back_keyboard(f"bot_{account.id}"),
|
||||
)
|
||||
task = asyncio.create_task(auto_update_2fa(callback.message, bot_name))
|
||||
task = asyncio.create_task(auto_update_2fa(callback.message, bot_name, account.id))
|
||||
twofa_tasks[message_id] = task
|
||||
logger.info(
|
||||
"Запущено фоновое обновление 2FA для бота %s в сообщении %s",
|
||||
@@ -52,13 +57,19 @@ async def twofa_handler(callback: CallbackQuery) -> None:
|
||||
@router.callback_query(
|
||||
lambda c: c.data
|
||||
and c.data.startswith("confirm_")
|
||||
and c.data.removeprefix("confirm_").isdigit()
|
||||
and not c.data.startswith("confirm_list_")
|
||||
and not c.data.startswith("confirm_all_"),
|
||||
AdminCallbackFilter(),
|
||||
)
|
||||
async def confirm_trades(callback: CallbackQuery) -> None:
|
||||
await callback.answer()
|
||||
bot_name = callback.data.replace("confirm_", "")
|
||||
try:
|
||||
account = await get_owned_bot(callback.from_user.id, int(callback.data.replace("confirm_", "")))
|
||||
except ValueError:
|
||||
account = None
|
||||
if account is None:
|
||||
await callback.answer("Бот не найден или вам не принадлежит", show_alert=True); return
|
||||
bot_name = account.bot_name
|
||||
logger.info(
|
||||
"Пользователь %s подтвердил сделки для бота %s",
|
||||
describe_user(callback.from_user),
|
||||
@@ -86,7 +97,7 @@ async def confirm_trades(callback: CallbackQuery) -> None:
|
||||
|
||||
|
||||
@router.callback_query(
|
||||
lambda c: c.data and c.data.startswith("confirm_list_"), AdminCallbackFilter()
|
||||
lambda c: c.data and c.data.startswith("confirm_list_")
|
||||
)
|
||||
async def confirm_list(callback: CallbackQuery) -> None:
|
||||
await stop_twofa_task(callback.message.message_id)
|
||||
@@ -97,7 +108,13 @@ async def confirm_list(callback: CallbackQuery) -> None:
|
||||
describe_user(callback.from_user),
|
||||
)
|
||||
return
|
||||
bot_name = callback.data.replace("confirm_list_", "")
|
||||
try:
|
||||
account = await get_owned_bot(callback.from_user.id, int(callback.data.replace("confirm_list_", "")))
|
||||
except ValueError:
|
||||
account = None
|
||||
if account is None:
|
||||
await callback.answer("Бот не найден или вам не принадлежит", show_alert=True); return
|
||||
bot_name = account.bot_name
|
||||
logger.info(
|
||||
"Пользователь %s открыл список подтверждений для бота %s",
|
||||
describe_user(callback.from_user),
|
||||
@@ -118,7 +135,7 @@ async def confirm_list(callback: CallbackQuery) -> None:
|
||||
for conf in confirmations:
|
||||
text += f"- {conf['type_name']}\nID: <code>{conf['id']}</code>\n\n"
|
||||
await callback.message.edit_text(
|
||||
text, reply_markup=confirmations_keyboard(bot_name)
|
||||
text, reply_markup=confirmations_keyboard(account.id)
|
||||
)
|
||||
except Exception as error:
|
||||
logger.exception(
|
||||
@@ -129,7 +146,7 @@ async def confirm_list(callback: CallbackQuery) -> None:
|
||||
|
||||
|
||||
@router.callback_query(
|
||||
lambda c: c.data and c.data.startswith("confirm_all_"), AdminCallbackFilter()
|
||||
lambda c: c.data and c.data.startswith("confirm_all_")
|
||||
)
|
||||
async def confirm_all(callback: CallbackQuery) -> None:
|
||||
await stop_twofa_task(callback.message.message_id)
|
||||
@@ -142,7 +159,13 @@ async def confirm_all(callback: CallbackQuery) -> None:
|
||||
)
|
||||
return
|
||||
|
||||
bot_name = callback.data.replace("confirm_all_", "")
|
||||
try:
|
||||
account = await get_owned_bot(callback.from_user.id, int(callback.data.replace("confirm_all_", "")))
|
||||
except ValueError:
|
||||
account = None
|
||||
if account is None:
|
||||
await callback.answer("Бот не найден или вам не принадлежит", show_alert=True); return
|
||||
bot_name = account.bot_name
|
||||
logger.info(
|
||||
"Пользователь %s запустил подтверждение всех сделок для бота %s",
|
||||
describe_user(callback.from_user),
|
||||
@@ -175,7 +198,7 @@ async def confirm_all(callback: CallbackQuery) -> None:
|
||||
text += f"- {conf['type_name']}\nID: <code>{conf['id']}</code>\n\n"
|
||||
|
||||
await callback.message.edit_text(
|
||||
text, reply_markup=confirmations_keyboard(bot_name)
|
||||
text, reply_markup=confirmations_keyboard(account.id)
|
||||
)
|
||||
await callback.answer("Все подтверждено", show_alert=True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user