52 lines
1.9 KiB
Python
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() |