naiscriil/Youtube_comments
0
1import asyncio2import logging3import torch4 5from aiogram import Bot, Dispatcher6from aiogram.filters import Command7from aiogram.types import Message8 9import streamlit as st10 11from model import load_resources, generate_comment12from youtube_api import get_prompt_for_model13 14torch.classes.__path__ = []15 16TOKEN = "7767494731:AAEM8LhFlV5qw5ACONBhmvK1QjXRdNJwCyk"17 18GREETING = "Hi! I am Commentator bot."19HELP = "Send me a YouTube video's URL and I will generate a comment"20UNIVERSAL_COMMENT = "Who is watching in 2025?"21ERROR_MESSAGE = "Error: URL is incorrect or video is unavailable. /help"22 23dp = Dispatcher()24 25@dp.message(Command("start"))26async def command_start_handler(message: Message) -> None:27 await message.answer(GREETING + "\n\n" + HELP)28 29@dp.message(Command("help"))30async def command_help_handler(message: Message) -> None:31 await message.answer(HELP)32 33@dp.message()34async def url_handler(message: Message) -> None:35 prompt = get_prompt_for_model(message.text)36 if prompt:37 comment = generate_comment(prompt)38 await message.answer(comment)39 else:40 await message.answer(ERROR_MESSAGE)41 42 43async def main() -> None:44 bot = Bot(token=TOKEN)45 46 async def on_shutdown(dispatcher: Dispatcher):47 logger.info("Shutting down bot...")48 await dispatcher.storage.close()49 logger.info("Bot shutdown complete.")50 dp.shutdown.register(on_shutdown)51 52 logger.info("Starting polling...")53 try:54 await dp.start_polling(bot, handle_signals=False)55 56 except Exception as e:57 logger.critical(f"Polling failed: {e}", exc_info=True)58 finally:59 await bot.session.close()60 logger.info("Bot session closed.")61 62 63if __name__ == "__main__":64 logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(name)s - %(message)s')65 logger = logging.getLogger(__name__)66 logger.info("Starting bot...")67 68 model, tokenizer = load_resources()69 if not model or not tokenizer:70 logger.critical("Fatal Error: Model or Tokenizer failed to load. Exiting.")71 exit()72 logger.info("Model and tokenizer loaded successfully.")73 74 try:75 asyncio.run(main())76 except (KeyboardInterrupt, SystemExit):77 logger.info("Bot stopped.")78 except Exception as e:79 logger.critical(f"Bot crashed unexpectedly: {e}", exc_info=True)80 