telegram.video.summary.bot/main.py

52 lines
1.9 KiB
Python

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()