Added loggers. Rename file. Update
This commit is contained in:
56
run.py
Normal file
56
run.py
Normal file
@@ -0,0 +1,56 @@
|
||||
import asyncio
|
||||
import contextlib
|
||||
import logging.config
|
||||
|
||||
from aiogram import Bot, Dispatcher
|
||||
from aiogram.fsm.storage.redis import RedisStorage
|
||||
|
||||
from app.bybit.web_socket import WebSocketBot
|
||||
from app.telegram.handlers import router
|
||||
from config import BOT_TOKEN
|
||||
from database import init_db
|
||||
from logger_helper.logger_helper import LOGGING_CONFIG
|
||||
|
||||
logging.config.dictConfig(LOGGING_CONFIG)
|
||||
logger = logging.getLogger("run")
|
||||
|
||||
|
||||
async def main():
|
||||
"""
|
||||
The main function of launching the bot.
|
||||
|
||||
Performs database initialization, creation of bot and dispatcher objects,
|
||||
then it triggers the long polling event.
|
||||
|
||||
Logs important events and errors.
|
||||
"""
|
||||
try:
|
||||
await init_db()
|
||||
bot = Bot(token=BOT_TOKEN)
|
||||
storage = RedisStorage.from_url("redis://localhost:6379")
|
||||
dp = Dispatcher(storage=storage)
|
||||
dp.include_router(router)
|
||||
web_socket = WebSocketBot(telegram_bot=bot)
|
||||
await web_socket.clear_user_sockets()
|
||||
ws_task = asyncio.create_task(web_socket.run_user_check_loop())
|
||||
tg_task = asyncio.create_task(dp.start_polling(bot))
|
||||
|
||||
try:
|
||||
logger.info("Bot started")
|
||||
await asyncio.gather(ws_task, tg_task)
|
||||
except Exception as e:
|
||||
logger.error("Bot stopped with error: %s", e)
|
||||
finally:
|
||||
for task in (ws_task, tg_task):
|
||||
task.cancel()
|
||||
with contextlib.suppress(asyncio.CancelledError):
|
||||
await ws_task
|
||||
await tg_task
|
||||
await web_socket.clear_user_sockets()
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Bot stopped with error: %s", e)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
Reference in New Issue
Block a user