Initial commit: UMB Telegram Bot
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from aiogram.exceptions import TelegramNetworkError
|
||||
from aiohttp import ClientConnectionError
|
||||
|
||||
from aiogram import F
|
||||
from aiogram.types import Message
|
||||
from aiogram.dispatcher.event.bases import SkipHandler
|
||||
|
||||
from bot.bot import dp, bot, setup_proxy
|
||||
from bot.routers import moderation, layout, weather, ai, voice, yadisk, dialogue
|
||||
from bot.utils.database import init_db, save_chat_user
|
||||
from bot.utils.ai_client import start_model_health_check
|
||||
from bot.utils.logging_config import setup_logging
|
||||
from bot.setup_commands import setup_bot_commands
|
||||
from config import PROXY_ENABLED
|
||||
|
||||
setup_logging()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
dp.include_router(moderation.router)
|
||||
dp.include_router(layout.router)
|
||||
dp.include_router(weather.router)
|
||||
dp.include_router(ai.router)
|
||||
dp.include_router(voice.router)
|
||||
dp.include_router(yadisk.router)
|
||||
dp.include_router(dialogue.router)
|
||||
|
||||
|
||||
@dp.message(F.text)
|
||||
async def save_user_info(message: Message):
|
||||
try:
|
||||
await save_chat_user(
|
||||
message.from_user.id,
|
||||
message.chat.id,
|
||||
message.from_user.username,
|
||||
message.from_user.full_name or "",
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
raise SkipHandler()
|
||||
|
||||
|
||||
async def main():
|
||||
await init_db()
|
||||
logging.info("База данных инициализирована")
|
||||
await setup_bot_commands()
|
||||
|
||||
asyncio.create_task(start_model_health_check())
|
||||
|
||||
try:
|
||||
if PROXY_ENABLED:
|
||||
await setup_proxy()
|
||||
else:
|
||||
me = await bot.me()
|
||||
logging.info(f"Бот запущен без прокси: @{me.username}")
|
||||
except TelegramNetworkError as e:
|
||||
if PROXY_ENABLED:
|
||||
logging.error("Не могу соединиться с прокси сервером. Попробуй другой прокси.")
|
||||
else:
|
||||
logging.error("Не могу соединиться с Telegram. Проверь интернет-соединение.")
|
||||
return
|
||||
except ClientConnectionError as e:
|
||||
if PROXY_ENABLED:
|
||||
logging.error("Не могу соединиться с прокси сервером. Попробуй другой прокси.")
|
||||
else:
|
||||
logging.error("Не могу соединиться с Telegram. Проверь интернет-соединение.")
|
||||
return
|
||||
except Exception as e:
|
||||
logging.error(f"Ошибка при запуске бота: {e}")
|
||||
return
|
||||
|
||||
await dp.start_polling(bot)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user