import asyncio import logging from telegram import Update from telegram.ext import ApplicationBuilder, MessageHandler, filters, CommandHandler from src.config import TELEGRAM_BOT_TOKEN, logger # Import logger z config from src.handlers import handle_message, error_handler from src.db import init_db, close_db async def post_init(application): """Funkcja wykonywana po inicjalizacji aplikacji bota.""" await init_db() logger.info("Baza danych zainicjalizowana.") async def post_shutdown(application): """Funkcja wykonywana przed zamknięciem bota.""" await close_db() logger.info("Pula połączeń z bazą danych zamknięta.") def run(): """Uruchamia bota.""" if not TELEGRAM_BOT_TOKEN: logger.critical("TELEGRAM_BOT_TOKEN nie jest ustawiony. Kończę działanie.") return logger.info("Uruchamiam bota...") # Budowanie aplikacji bota application = ( ApplicationBuilder() .token(TELEGRAM_BOT_TOKEN) .post_init(post_init) # Wywołaj init_db po starcie .post_shutdown(post_shutdown) # Wywołaj close_db przed zamknięciem .build() ) # Rejestracja handlerów # Nasłuchuj tylko wiadomości tekstowych w czatach prywatnych i grupowych message_handler = MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message) application.add_handler(message_handler) # Rejestracja globalnego error handlera application.add_error_handler(error_handler) # Uruchomienie bota (polling) logger.info("Bot rozpoczął nasłuchiwanie...") application.run_polling(allowed_updates=Update.ALL_TYPES) # Pobieraj wszystkie typy aktualizacji if __name__ == '__main__': # To pozwala uruchomić bota bezpośrednio przez `python src/bot/main.py` # Jeśli chcesz używać skryptu zdefiniowanego w pyproject.toml, # zainstaluj pakiet (np. pip install .) i uruchom `youtube-summarizer-bot` run()