CoolFace
Apppublic

naiscriil/Youtube_comments

sourceHugging Faceunknownupdated 1y agoView on Hugging Face
0likes
bot.py80 linesDownload Raw Back to root
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