Add telegram bot
This commit is contained in:
65
bot/main.py
Normal file
65
bot/main.py
Normal file
@@ -0,0 +1,65 @@
|
||||
import asyncio
|
||||
import logging
|
||||
import sys
|
||||
|
||||
from aiogram import Bot, Dispatcher
|
||||
from aiogram.client.default import DefaultBotProperties
|
||||
from aiogram.enums import ParseMode
|
||||
|
||||
from config import settings
|
||||
from handlers import start, marathons, link
|
||||
from middlewares.logging import LoggingMiddleware
|
||||
|
||||
# Configure logging to stdout with DEBUG level
|
||||
logging.basicConfig(
|
||||
level=logging.DEBUG,
|
||||
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
|
||||
handlers=[
|
||||
logging.StreamHandler(sys.stdout)
|
||||
]
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Set aiogram logging level
|
||||
logging.getLogger("aiogram").setLevel(logging.INFO)
|
||||
|
||||
|
||||
async def main():
|
||||
logger.info("="*50)
|
||||
logger.info("Starting Game Marathon Bot...")
|
||||
logger.info(f"API_URL: {settings.API_URL}")
|
||||
logger.info(f"BOT_TOKEN: {settings.TELEGRAM_BOT_TOKEN[:20]}...")
|
||||
logger.info("="*50)
|
||||
|
||||
bot = Bot(
|
||||
token=settings.TELEGRAM_BOT_TOKEN,
|
||||
default=DefaultBotProperties(parse_mode=ParseMode.HTML)
|
||||
)
|
||||
|
||||
# Get bot username for deep links
|
||||
bot_info = await bot.get_me()
|
||||
settings.BOT_USERNAME = bot_info.username
|
||||
logger.info(f"Bot info: @{settings.BOT_USERNAME} (id={bot_info.id})")
|
||||
|
||||
dp = Dispatcher()
|
||||
|
||||
# Register middleware
|
||||
dp.message.middleware(LoggingMiddleware())
|
||||
logger.info("Logging middleware registered")
|
||||
|
||||
# Register routers
|
||||
logger.info("Registering routers...")
|
||||
dp.include_router(start.router)
|
||||
dp.include_router(link.router)
|
||||
dp.include_router(marathons.router)
|
||||
logger.info("Routers registered: start, link, marathons")
|
||||
|
||||
# Start polling
|
||||
logger.info("Deleting webhook and starting polling...")
|
||||
await bot.delete_webhook(drop_pending_updates=True)
|
||||
logger.info("Polling started! Waiting for messages...")
|
||||
await dp.start_polling(bot)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user