This commit is contained in:
dj
2025-10-10 07:04:08 +03:00
parent 9a48d6f60f
commit c9099dac69
26 changed files with 738 additions and 405 deletions
+21 -25
View File
@@ -6,9 +6,10 @@ import sys
import colorama
from aiogram import Bot, Dispatcher
from aiogram.client.default import DefaultBotProperties
from aiogram.enums import ParseMode
from tgbot.data.config import BOT_TOKEN, BOT_SCHEDULER, get_admins
from tgbot.database.db_helper import create_dbx
from tgbot.database.adb_helper import database_initialization
from tgbot.middlewares import register_all_middlwares
from tgbot.routers import register_all_routers
from tgbot.services.api_session import AsyncRequestSession
@@ -19,30 +20,31 @@ from tgbot.utils.misc_functions import autobackup_admin, startup_notify
colorama.init()
# Запуск шедулеров
# Start schedulers
async def scheduler_start(bot):
BOT_SCHEDULER.add_job(autobackup_admin, trigger="cron", hour=00, args=(bot,)) # Ежедневный Автобэкап в 00:00
# Запуск бота и базовых функций
# Start bot and basic functions
async def main():
BOT_SCHEDULER.start() # Запуск Шедулера
dp = Dispatcher() # Образ Диспетчера
arSession = AsyncRequestSession() # Пул асинхронной сессии запросов
BOT_SCHEDULER.start() # Start scheduler
dp = Dispatcher() # Dispatcher image
arSession = AsyncRequestSession() # Async session pool (aiohttp)
bot = Bot( # Образ Бота
token=BOT_TOKEN,
default=DefaultBotProperties(
parse_mode="HTML",
parse_mode=ParseMode.HTML
),
)
register_all_middlwares(dp) # Регистрация всех мидлварей
register_all_routers(dp) # Регистрация всех роутеров
register_all_middlwares(dp) # Register all middlewares
register_all_routers(dp) # Register all routers
try:
await set_commands(bot) # Установка пользовательских команд в боте
await startup_notify(bot) # Уведомление админов о запуске бота
await scheduler_start(bot) # Подключение шедулеров
await set_commands(bot) # Set commands for users
await startup_notify(bot) # Notification that bot was started
await scheduler_start(bot) # Connect schedulers
bot_logger.warning("BOT WAS STARTED")
print(colorama.Fore.LIGHTYELLOW_EX + f"~~~~~ Bot was started - @{(await bot.get_me()).username} ~~~~~")
@@ -51,31 +53,25 @@ async def main():
if len(get_admins()) == 0: print("***** ENTER ADMIN ID IN settings.ini *****")
await bot.delete_webhook() # Удаление вебхуков, если они имеются
await bot.get_updates(offset=-1) # Сброс пендинг апдейтов
await bot.delete_webhook() # Deletes webhooks, if they was have
await bot.get_updates(offset=-1) # Reset update pengings
# Запуск бота (поллинга)
# Run bot (polling method)
await dp.start_polling(
bot,
arSession=arSession,
allowed_updates=dp.resolve_used_update_types(),
)
finally:
await arSession.close() # Закрытие Асинхронной Сессии для прочих запросов
await bot.session.close() # Закрытие сессии бота
await arSession.close() # Close async session (aiohttp)
await bot.session.close() # Close bot session
if __name__ == "__main__":
create_dbx() # Генерация Базы Данных и Таблиц
database_initialization() # Initializate Database, tables and columns
try:
if sys.platform == 'win32': # Запуск на 32-х битных системах
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
loop = asyncio.ProactorEventLoop()
asyncio.set_event_loop(loop)
loop.run_until_complete(main())
else:
asyncio.run(main()) # Запуск на всех других системах
asyncio.run(main())
except (KeyboardInterrupt, SystemExit):
bot_logger.warning("Bot was stopped")
finally: