Archived
feat(bot): add async DB and FSM state handling
This commit is contained in:
+13
-13
@@ -1,8 +1,8 @@
|
||||
import asyncio
|
||||
import re
|
||||
|
||||
from bot.logging_utils import get_logger
|
||||
from bot.api.asf import get_all_bots, redeem_key
|
||||
from bot.logging_utils import get_logger, mask_key
|
||||
|
||||
KEY_PATTERN = r"[A-Z0-9]{5}(?:-[A-Z0-9]{5}){2}"
|
||||
logger = get_logger(__name__)
|
||||
@@ -52,7 +52,7 @@ async def redeem_single_bot_keys(bot_name: str, keys: list[str]) -> str:
|
||||
logger.info(
|
||||
"Попытка активации ключа для одного бота: bot=%s key=%s",
|
||||
bot_name,
|
||||
mask_key(key),
|
||||
key,
|
||||
)
|
||||
success, result = await redeem_key(bot_name, key)
|
||||
await asyncio.sleep(2)
|
||||
@@ -62,16 +62,16 @@ async def redeem_single_bot_keys(bot_name: str, keys: list[str]) -> str:
|
||||
logger.warning(
|
||||
"Активация ключа завершилась ошибкой ASF/HTTP: bot=%s key=%s",
|
||||
bot_name,
|
||||
mask_key(key),
|
||||
key,
|
||||
)
|
||||
results.append(f"❌ {key}: ASF ERROR")
|
||||
results.append(f"❌ {key}: ошибка ASF")
|
||||
continue
|
||||
|
||||
status = parse_redeem_result(result)
|
||||
logger.info(
|
||||
"Получен результат активации ключа: bot=%s key=%s status=%s",
|
||||
bot_name,
|
||||
mask_key(key),
|
||||
key,
|
||||
status,
|
||||
)
|
||||
|
||||
@@ -80,7 +80,7 @@ async def redeem_single_bot_keys(bot_name: str, keys: list[str]) -> str:
|
||||
results.append(f"✅ {key}: активировано")
|
||||
elif status == "rate_limited":
|
||||
failed_count += 1
|
||||
results.append(f"⏳ {key}: rate limit")
|
||||
results.append(f"⏳ {key}: лимит запросов")
|
||||
elif status == "already_owned":
|
||||
failed_count += 1
|
||||
results.append(f"⚠️ {key}: игра уже есть")
|
||||
@@ -124,13 +124,13 @@ async def redeem_all_bots_keys(keys: list[str]) -> str:
|
||||
for key in keys:
|
||||
activated = False
|
||||
key_report = []
|
||||
logger.info("Начата обработка ключа по всем ботам: key=%s", mask_key(key))
|
||||
logger.info("Начата обработка ключа по всем ботам: key=%s", key)
|
||||
|
||||
for bot_name in bots:
|
||||
logger.info(
|
||||
"Попытка активации ключа на боте: bot=%s key=%s",
|
||||
bot_name,
|
||||
mask_key(key),
|
||||
key,
|
||||
)
|
||||
success, result = await redeem_key(bot_name, key)
|
||||
await asyncio.sleep(2)
|
||||
@@ -139,16 +139,16 @@ async def redeem_all_bots_keys(keys: list[str]) -> str:
|
||||
logger.warning(
|
||||
"Активация ключа завершилась ошибкой ASF/HTTP: bot=%s key=%s",
|
||||
bot_name,
|
||||
mask_key(key),
|
||||
key,
|
||||
)
|
||||
key_report.append(f"❌ {bot_name}: ASF ERROR")
|
||||
key_report.append(f"❌ {bot_name}: ошибка ASF")
|
||||
continue
|
||||
|
||||
status = parse_redeem_result(result, bot_name)
|
||||
logger.info(
|
||||
"Получен результат активации ключа: bot=%s key=%s status=%s",
|
||||
bot_name,
|
||||
mask_key(key),
|
||||
key,
|
||||
status,
|
||||
)
|
||||
|
||||
@@ -158,7 +158,7 @@ async def redeem_all_bots_keys(keys: list[str]) -> str:
|
||||
activated = True
|
||||
break
|
||||
if status == "rate_limited":
|
||||
key_report.append(f"⏳ {bot_name}: rate limit")
|
||||
key_report.append(f"⏳ {bot_name}: лимит запросов")
|
||||
continue
|
||||
if status == "already_owned":
|
||||
key_report.append(f"⚠️ {bot_name}: игра уже есть")
|
||||
@@ -178,7 +178,7 @@ async def redeem_all_bots_keys(keys: list[str]) -> str:
|
||||
failed_count += 1
|
||||
logger.warning(
|
||||
"Ключ не удалось активировать ни на одном боте: key=%s",
|
||||
mask_key(key),
|
||||
key,
|
||||
)
|
||||
|
||||
results.append(f"\n🔑 {key}\n" + "\n".join(key_report))
|
||||
|
||||
Reference in New Issue
Block a user