First commit
This commit is contained in:
71
main.py
Normal file
71
main.py
Normal 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)
|
||||
Reference in New Issue
Block a user