From fc7f97c136be053a9acf98df551a5cccf6adb775 Mon Sep 17 00:00:00 2001 From: 3252a8 <3252a8@proton.me> Date: Sun, 17 May 2026 00:31:08 +0300 Subject: [PATCH] refactor: drop unused legacy run_bot flags and dead backend/main.py --- backend/bot/main_bot.py | 52 +++++++---------------------------------- backend/main.py | 36 ---------------------------- backend/main_backend.py | 2 +- 3 files changed, 9 insertions(+), 81 deletions(-) delete mode 100644 backend/main.py diff --git a/backend/bot/main_bot.py b/backend/bot/main_bot.py index 8cf1f81..06c67f4 100644 --- a/backend/bot/main_bot.py +++ b/backend/bot/main_bot.py @@ -15,7 +15,6 @@ from bot.middlewares.i18n import JsonI18n from bot.routers import build_root_router from bot.services.panel_api_service import PanelApiService from bot.services.settings_override_service import load_overrides_from_db -from bot.services.tariff_worker import TariffTrafficWorker from bot.utils.message_queue import init_queue_manager from config.settings import Settings from db.database_setup import init_db_connection @@ -223,12 +222,7 @@ async def on_shutdown_configured(dispatcher: Dispatcher): logging.info("SHUTDOWN: Bot on_shutdown_configured completed.") -async def run_bot( - settings_param: Settings, - *, - run_web: bool = True, - run_tariff_worker: bool = False, -): +async def run_bot(settings_param: Settings): local_async_session_factory = init_db_connection(settings_param) if local_async_session_factory is None: logging.critical("Failed to initialize database connection and session factory. Exiting.") @@ -263,17 +257,6 @@ async def run_bot( dp[key] = service dp["panel_service"] = services["panel_service"] dp["async_session_factory"] = local_async_session_factory - tariff_worker = None - if run_tariff_worker: - tariff_worker = TariffTrafficWorker( - settings_param, - local_async_session_factory, - services["panel_service"], - services["subscription_service"], - bot, - i18n_instance, - ) - dp["tariff_worker"] = tariff_worker # Wrap startup/shutdown handlers to satisfy aiogram event signature (no args passed) async def _on_startup_wrapper(): @@ -287,36 +270,21 @@ async def run_bot( await register_all_routers(dp, settings_param) - tg_webhook_base = settings_param.WEBHOOK_BASE_URL - - # Webhook mode is now required - exit if not configured - if not tg_webhook_base: + if not settings_param.WEBHOOK_BASE_URL: logging.error("WEBHOOK_BASE_URL is required. Polling mode is disabled. Exiting.") await dp.emit_shutdown() raise SystemExit("WEBHOOK_BASE_URL is required. Polling mode is disabled.") - logging.info("--- Bot Run Mode Decision ---") - logging.info(f"Configured WEBHOOK_BASE_URL: '{tg_webhook_base}' -> Webhook Mode: ENABLED") - logging.info(f"YooKassa webhook path: '{settings_param.yookassa_webhook_path}'") - logging.info("Decision: Run AIOHTTP server: ENABLED (required for webhooks)") - logging.info("--- End Bot Run Mode Decision ---") + logging.info( + "Starting AIOHTTP server: webhook_base=%s yookassa_path=%s", + settings_param.WEBHOOK_BASE_URL, + settings_param.yookassa_webhook_path, + ) - web_app_runner = None - main_tasks = [] - - # Only run AIOHTTP server for webhook mode async def web_server_task(): await build_and_start_web_app(dp, bot, settings_param, local_async_session_factory) - if run_web: - main_tasks.append(asyncio.create_task(web_server_task(), name="AIOHTTPServerTask")) - if run_tariff_worker and tariff_worker and settings_param.tariffs_config: - main_tasks.append(asyncio.create_task(tariff_worker.run(), name="TariffTrafficWorker")) - - # Recurring billing moved to panel webhook (24h before expiry). No periodic task needed here. - - logging.info("Starting bot runtime...") - logging.info(f"Starting bot with main tasks: {[task.get_name() for task in main_tasks]}") + main_tasks = [asyncio.create_task(web_server_task(), name="AIOHTTPServerTask")] try: await asyncio.gather(*main_tasks) @@ -337,10 +305,6 @@ async def run_bot( exc_info=True, ) - if web_app_runner: - await web_app_runner.cleanup() - logging.info("AIOHTTP AppRunner cleaned up.") - await dp.emit_shutdown() logging.info("Dispatcher shutdown sequence emitted.") diff --git a/backend/main.py b/backend/main.py deleted file mode 100644 index b8f2676..0000000 --- a/backend/main.py +++ /dev/null @@ -1,36 +0,0 @@ -import asyncio -import logging -import os -import sys - -from dotenv import load_dotenv -from startup_banner import print_startup_banner - -from bot.main_bot import run_bot -from config.settings import get_settings - - -def _resolve_log_level(value: str) -> int: - return getattr(logging, value.upper(), logging.INFO) - - -async def main(): - settings = get_settings() - await run_bot(settings, run_web=True, run_tariff_worker=False) - - -if __name__ == "__main__": - load_dotenv() - print_startup_banner("bot") - logging.basicConfig( - level=_resolve_log_level(os.getenv("LOG_LEVEL", "INFO")), - stream=sys.stdout, - format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", - ) - try: - asyncio.run(main()) - except (KeyboardInterrupt, SystemExit): - logging.info("Bot stopped manually") - except Exception as e_global: - logging.critical(f"Global unhandled exception in main: {e_global}", exc_info=True) - sys.exit(1) diff --git a/backend/main_backend.py b/backend/main_backend.py index 9916f79..80ba517 100644 --- a/backend/main_backend.py +++ b/backend/main_backend.py @@ -12,7 +12,7 @@ from config.settings import get_settings async def main() -> None: settings = get_settings() - await run_bot(settings, run_web=True, run_tariff_worker=False) + await run_bot(settings) if __name__ == "__main__":