2022-09-16 07:48:10 +02:00
|
|
|
#!/usr/bin/python
|
2022-10-15 17:52:45 +03:00
|
|
|
import logging
|
|
|
|
import os
|
2022-10-16 15:39:03 +03:00
|
|
|
import asyncio
|
2022-10-21 21:06:37 +03:00
|
|
|
|
2022-10-15 17:52:45 +03:00
|
|
|
from aiogram import Bot, Dispatcher
|
2022-10-16 22:57:44 +03:00
|
|
|
from aiogram.contrib.fsm_storage.memory import MemoryStorage
|
2022-10-21 21:06:37 +03:00
|
|
|
from asyncpg import create_pool
|
2022-10-16 15:39:03 +03:00
|
|
|
|
|
|
|
from middlewares.db import DbMiddleware
|
2022-10-15 18:51:27 +03:00
|
|
|
from handlers.commands import register_command_handlers
|
2022-10-16 22:57:44 +03:00
|
|
|
from handlers.projects import register_projects_handlers
|
2022-09-16 07:48:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
async def main():
|
2022-10-15 17:52:45 +03:00
|
|
|
"""Configures and runs the bot, connects to the db"""
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
2022-10-17 12:35:26 +03:00
|
|
|
|
2022-10-15 17:52:45 +03:00
|
|
|
API_TOKEN = os.getenv("API_TOKEN")
|
|
|
|
|
2022-10-17 12:35:26 +03:00
|
|
|
DB_HOST = os.getenv("DB_HOST")
|
|
|
|
DB_USER = os.getenv("DB_USER")
|
|
|
|
DB_PASS = os.getenv("DB_PASS")
|
|
|
|
DB_NAME = os.getenv("DB_NAME")
|
|
|
|
|
2022-10-21 21:06:37 +03:00
|
|
|
pool = await create_pool(
|
2022-10-17 12:35:26 +03:00
|
|
|
f"postgresql://{DB_USER}:{DB_PASS}@{DB_HOST}/{DB_NAME}"
|
|
|
|
)
|
2022-10-16 15:39:03 +03:00
|
|
|
|
2022-10-15 17:52:45 +03:00
|
|
|
bot = Bot(API_TOKEN)
|
2022-10-16 22:57:44 +03:00
|
|
|
dp = Dispatcher(bot, storage=MemoryStorage())
|
2022-10-15 17:52:45 +03:00
|
|
|
|
2022-10-15 18:51:27 +03:00
|
|
|
# Register handlers
|
|
|
|
register_command_handlers(dp)
|
2022-10-16 22:57:44 +03:00
|
|
|
register_projects_handlers(dp)
|
2022-10-15 18:51:27 +03:00
|
|
|
|
2022-10-16 15:39:03 +03:00
|
|
|
# Register middlewares
|
|
|
|
dp.middleware.setup(DbMiddleware(pool))
|
|
|
|
|
2022-10-15 17:52:45 +03:00
|
|
|
try:
|
|
|
|
await dp.start_polling()
|
|
|
|
finally:
|
|
|
|
await dp.storage.close()
|
2022-10-15 19:24:54 +03:00
|
|
|
bot_session = await bot.get_session()
|
|
|
|
await bot_session.close()
|
2022-09-16 07:48:10 +02:00
|
|
|
|
|
|
|
|
2022-10-17 14:58:17 +04:00
|
|
|
if __name__ == "__main__":
|
2022-09-16 07:48:10 +02:00
|
|
|
asyncio.run(main())
|