First commit

This commit is contained in:
2026-01-23 04:45:55 +07:00
commit 0b251c5967
118 changed files with 9580 additions and 0 deletions

71
main.py Normal file
View File

@@ -0,0 +1,71 @@
from asyncio import run, sleep
from sys import exit
from bot import *
from configs.config import Webhook
from database import db
from middleware import logger
async def on_startup() -> None:
"""Действия при запуске бота."""
# Создание логера
logger.setup()
# Создание базы данных
await db.setup()
# Настройка информации о боте
await BotInfo.setup(bots=bot)
# Настройка middleware
setup_middlewares(
dp=dp,
bot=bot,
channel_ids=[],
)
# Подключение роутеров
dp.include_router(router)
# Вывод информации о боте
BotInfo.start_info_out()
async def run_polling() -> None:
"""Запуск в режиме polling."""
try:
await on_startup()
await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())
finally:
await bot.session.close()
async def run_webhook() -> None:
"""Запуск в режиме webhook."""
app: WebhookApp = WebhookApp(host=Webhook.WEBHOOK_HOST, port=Webhook.WEBHOOK_PORT)
try:
await on_startup()
await app.start()
# держим процесс живым
while True:
await sleep(3600)
finally:
await app.stop()
await bot.session.close()
async def main() -> None:
# Запуск в нужном режиме
if Webhook.WEBHOOK:
await run_webhook()
else:
await run_polling()
if __name__ == "__main__":
try:
run(main())
except (KeyboardInterrupt, SystemExit):
logger.info("❌ Бот остановлен!")
exit(0)