Archived
refactor(logging): logging and rename token env
This commit is contained in:
@@ -5,6 +5,7 @@ from aiogram.types import Message
|
||||
|
||||
from bot.api.asf import get_all_bots, send_command
|
||||
from bot.filters import AdminFilter
|
||||
from bot.logging_utils import describe_user, get_logger
|
||||
from bot.services.redeem import (
|
||||
extract_keys,
|
||||
redeem_all_bots_keys,
|
||||
@@ -25,29 +26,60 @@ from bot.ui.keyboards import (
|
||||
)
|
||||
|
||||
router = Router()
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
async def handle_console_message(message: Message) -> bool:
|
||||
if message.from_user.id not in console_users: # type: ignore[union-attr]
|
||||
return False
|
||||
command = message.text.strip() # type: ignore[union-attr]
|
||||
logger.info(
|
||||
"Пользователь %s отправил консольную команду: %s",
|
||||
describe_user(message.from_user),
|
||||
command,
|
||||
)
|
||||
try:
|
||||
await message.delete()
|
||||
except Exception:
|
||||
pass
|
||||
logger.debug(
|
||||
"Не удалось удалить сообщение с консольной командой от %s",
|
||||
describe_user(message.from_user),
|
||||
exc_info=True,
|
||||
)
|
||||
try:
|
||||
response = send_command(f"!{command}")
|
||||
if response.status_code != 200:
|
||||
logger.warning(
|
||||
"ASF вернул HTTP %s на консольную команду '%s' от %s",
|
||||
response.status_code,
|
||||
command,
|
||||
describe_user(message.from_user),
|
||||
)
|
||||
text = f"Ошибка HTTP {response.status_code}"
|
||||
else:
|
||||
data = response.json()
|
||||
if not data.get("Success"):
|
||||
logger.warning(
|
||||
"ASF вернул неуспешный ответ на консольную команду '%s' от %s",
|
||||
command,
|
||||
describe_user(message.from_user),
|
||||
)
|
||||
text = "Ошибка ASF"
|
||||
else:
|
||||
logger.info(
|
||||
"Консольная команда '%s' от %s выполнена успешно",
|
||||
command,
|
||||
describe_user(message.from_user),
|
||||
)
|
||||
result = html.escape(str(data.get("Result", "Нет ответа")))
|
||||
text = f"<b>Команда:</b> <code>{command}</code>\n\n<b>Ответ:</b>\n<code>{result}</code>"
|
||||
await message.answer(text, reply_markup=delete_message_keyboard())
|
||||
except Exception as error:
|
||||
logger.exception(
|
||||
"Ошибка при выполнении консольной команды '%s' от %s",
|
||||
command,
|
||||
describe_user(message.from_user),
|
||||
)
|
||||
await message.answer(f"Ошибка: {error}")
|
||||
return True
|
||||
|
||||
@@ -57,6 +89,11 @@ async def handle_single_bot_redeem(message: Message) -> bool:
|
||||
return False
|
||||
bot_name = bot_redeem_users.pop(message.from_user.id) # type: ignore[union-attr]
|
||||
menu_message = bot_redeem_messages.pop(message.from_user.id, None) # type: ignore[union-attr]
|
||||
logger.info(
|
||||
"Пользователь %s отправил ключи для бота %s",
|
||||
describe_user(message.from_user),
|
||||
bot_name,
|
||||
)
|
||||
if menu_message:
|
||||
try:
|
||||
response = get_all_bots()
|
||||
@@ -70,17 +107,38 @@ async def handle_single_bot_redeem(message: Message) -> bool:
|
||||
),
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
logger.debug(
|
||||
"Не удалось восстановить меню бота %s после ввода ключей от %s",
|
||||
bot_name,
|
||||
describe_user(message.from_user),
|
||||
exc_info=True,
|
||||
)
|
||||
try:
|
||||
await message.bot.delete_message(
|
||||
chat_id=message.chat.id, message_id=message.message_id
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
logger.debug(
|
||||
"Не удалось удалить сообщение с ключами для бота %s от %s",
|
||||
bot_name,
|
||||
describe_user(message.from_user),
|
||||
exc_info=True,
|
||||
)
|
||||
keys = extract_keys(message.text or "")
|
||||
if not keys:
|
||||
logger.info(
|
||||
"В сообщении от %s для бота %s не найдено ключей",
|
||||
describe_user(message.from_user),
|
||||
bot_name,
|
||||
)
|
||||
await message.answer("Ключи не найдены")
|
||||
return True
|
||||
logger.info(
|
||||
"Для бота %s получено %s ключ(ей) от %s",
|
||||
bot_name,
|
||||
len(keys),
|
||||
describe_user(message.from_user),
|
||||
)
|
||||
checking = await message.answer(
|
||||
f"Аккаунт: <code>{bot_name}</code>\nНайдено ключей: {len(keys)}\nНачинаю активацию..."
|
||||
)
|
||||
@@ -93,35 +151,64 @@ async def handle_all_bots_redeem(message: Message) -> bool:
|
||||
return False
|
||||
redeem_users.discard(message.from_user.id) # type: ignore[union-attr]
|
||||
menu_message = redeem_messages.pop(message.from_user.id, None) # type: ignore[union-attr]
|
||||
logger.info(
|
||||
"Пользователь %s отправил ключи для активации на всех ботах",
|
||||
describe_user(message.from_user),
|
||||
)
|
||||
if menu_message:
|
||||
try:
|
||||
await menu_message.edit_text(
|
||||
get_asf_status_text(), reply_markup=main_keyboard()
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
logger.debug(
|
||||
"Не удалось восстановить главное меню после массовой активации для %s",
|
||||
describe_user(message.from_user),
|
||||
exc_info=True,
|
||||
)
|
||||
try:
|
||||
await message.bot.delete_message(
|
||||
chat_id=message.chat.id, message_id=message.message_id
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
logger.debug(
|
||||
"Не удалось удалить сообщение с массовой активацией от %s",
|
||||
describe_user(message.from_user),
|
||||
exc_info=True,
|
||||
)
|
||||
keys = extract_keys(message.text or "")
|
||||
if not keys:
|
||||
logger.info(
|
||||
"В сообщении от %s для массовой активации не найдено ключей",
|
||||
describe_user(message.from_user),
|
||||
)
|
||||
await message.answer("Ключи не найдены")
|
||||
return True
|
||||
logger.info(
|
||||
"Для массовой активации получено %s ключ(ей) от %s",
|
||||
len(keys),
|
||||
describe_user(message.from_user),
|
||||
)
|
||||
checking = await message.answer(
|
||||
f"Найдено ключей: {len(keys)}\nНачинаю активацию..."
|
||||
)
|
||||
try:
|
||||
await checking.edit_text(await redeem_all_bots_keys(keys))
|
||||
except Exception as error:
|
||||
logger.exception(
|
||||
"Ошибка при массовой активации ключей от %s",
|
||||
describe_user(message.from_user),
|
||||
)
|
||||
await checking.edit_text(f"Ошибка: {error}")
|
||||
return True
|
||||
|
||||
|
||||
@router.message(AdminFilter())
|
||||
async def text_router(message: Message) -> None:
|
||||
logger.debug(
|
||||
"Получено текстовое сообщение от %s для маршрутизации",
|
||||
describe_user(message.from_user),
|
||||
)
|
||||
if await handle_console_message(message):
|
||||
return
|
||||
if await handle_single_bot_redeem(message):
|
||||
|
||||
Reference in New Issue
Block a user