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.")