Files
remnawave-bedolaga-telegram…/webhook_server.py
2025-08-14 04:38:58 +03:00

71 lines
2.3 KiB
Python

import logging
from aiohttp import web, ClientSession
from aiogram import Bot
from database import Database
from config import Config
from tribute_service import TributeService, tribute_webhook_route
logger = logging.getLogger(__name__)
class WebhookServer:
def __init__(self, bot: Bot, db: Database, config: Config):
self.bot = bot
self.db = db
self.config = config
self.app = None
self.runner = None
self.site = None
async def create_app(self):
self.app = web.Application()
tribute_service = TributeService(self.bot, self.config, self.db)
self.app['tribute_service'] = tribute_service
self.app.router.add_post(self.config.TRIBUTE_WEBHOOK_PATH, tribute_webhook_route)
async def health_check(request):
return web.json_response({"status": "ok", "service": "tribute-webhooks"})
self.app.router.add_get('/health', health_check)
logger.info(f"Webhook server configured with route: {self.config.TRIBUTE_WEBHOOK_PATH}")
return self.app
async def start(self):
try:
if not self.app:
await self.create_app()
self.runner = web.AppRunner(self.app)
await self.runner.setup()
self.site = web.TCPSite(
self.runner,
host='0.0.0.0',
port=self.config.TRIBUTE_WEBHOOK_PORT
)
await self.site.start()
logger.info(f"✅ Webhook server started on port {self.config.TRIBUTE_WEBHOOK_PORT}")
logger.info(f"🎯 Tribute webhook URL: http://your-server:{self.config.TRIBUTE_WEBHOOK_PORT}{self.config.TRIBUTE_WEBHOOK_PATH}")
except Exception as e:
logger.error(f"❌ Failed to start webhook server: {e}")
raise
async def stop(self):
try:
if self.site:
await self.site.stop()
logger.info("Webhook site stopped")
if self.runner:
await self.runner.cleanup()
logger.info("Webhook runner cleaned up")
except Exception as e:
logger.error(f"Error stopping webhook server: {e}")