diff --git a/app/tg_bot.py b/app/tg_bot.py
index 3de8424..1d8580a 100644
--- a/app/tg_bot.py
+++ b/app/tg_bot.py
@@ -16,7 +16,7 @@ from datetime import datetime
import aiohttp
from dotenv import load_dotenv
from aiogram import Bot, Dispatcher, F
-from aiogram.types import CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup
+from aiogram.types import CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup, Message
from schemas.base_schemas import Card
from rabbit_worker import RabbitWorker
@@ -27,7 +27,7 @@ load_dotenv()
setup_logging()
# ── Configuration ──────────────────────────────────────────────
-BOT_TOKEN = os.getenv("TG_BOT_TOKEN")
+BOT_TOKEN = os.getenv("TG_BOT_TOKEN") or ""
ADMIN_CHAT_ID = int(os.getenv("TG_ADMIN_CHAT_ID", "0"))
API_BASE_URL = os.getenv("API_BASE_URL", "http://localhost:5000")
MODERATION_SECRET = os.getenv("MODERATION_SECRET", "change-me-in-production")
@@ -117,6 +117,9 @@ async def call_moderation_api(action: str, card_id: int) -> dict:
# ── Callback button handlers ───────────────────────────────
@dp.callback_query(F.data.startswith("accept:"))
async def on_accept(callback: CallbackQuery) -> None:
+ if not callback.data or not isinstance(callback.message, Message):
+ return
+
card_id = int(callback.data.split(":")[1])
result = await call_moderation_api("accept", card_id)
@@ -124,8 +127,9 @@ async def on_accept(callback: CallbackQuery) -> None:
await callback.answer(f"Ошибка: {result['result']}", show_alert=True)
return
+ orig_text = callback.message.text or ""
await callback.message.edit_text(
- callback.message.text + "\n\n✅ ПРИНЯТА",
+ orig_text + "\n\n✅ ПРИНЯТА",
parse_mode="HTML",
)
await callback.answer("Карточка принята!")
@@ -134,6 +138,9 @@ async def on_accept(callback: CallbackQuery) -> None:
@dp.callback_query(F.data.startswith("reject:"))
async def on_reject(callback: CallbackQuery) -> None:
+ if not callback.data or not isinstance(callback.message, Message):
+ return
+
card_id = int(callback.data.split(":")[1])
result = await call_moderation_api("reject", card_id)
@@ -141,8 +148,9 @@ async def on_reject(callback: CallbackQuery) -> None:
await callback.answer(f"Ошибка: {result['result']}", show_alert=True)
return
+ orig_text = callback.message.text or ""
await callback.message.edit_text(
- callback.message.text + "\n\n❌ ОТКЛОНЕНА",
+ orig_text + "\n\n❌ ОТКЛОНЕНА",
parse_mode="HTML",
)
await callback.answer("Карточка отклонена!")
diff --git a/app/tools/_add_base_cards.py b/app/tools/_add_base_cards.py
index 0e8ce00..7d52e99 100644
--- a/app/tools/_add_base_cards.py
+++ b/app/tools/_add_base_cards.py
@@ -41,10 +41,12 @@ def write_json(cards_list, json_file):
except Exception as e:
print(f"Error writing to JSON file: {e}")
-def add_cards_to_mongodb(cards_list):
+import asyncio
+
+async def add_cards_to_mongodb(cards_list):
mongo = MongoWorker()
for card in cards_list:
- mongo.add_card_by_base_model(card)
+ await mongo.add_card_by_base_model(card)
print(f"Successfully added {len(cards_list)} cards to MongoDB")
@@ -60,13 +62,13 @@ if __name__ == "__main__":
if args.action == 0:
cards = create_cards(args.num, args.user)
- add_cards_to_mongodb(cards)
+ asyncio.run(add_cards_to_mongodb(cards))
elif args.action == 1:
cards = create_cards(args.num, args.user)
write_json(cards, args.file)
elif args.action == 2:
cards = read_json(args.file)
if cards:
- add_cards_to_mongodb(cards)
+ asyncio.run(add_cards_to_mongodb(cards))
else:
print("No valid cards found in JSON file.")