feat(proj): init
This commit is contained in:
+51
@@ -0,0 +1,51 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
from aiogram import Bot, Dispatcher
|
||||
from aiogram.client.session.aiohttp import AiohttpSession
|
||||
from aiogram.fsm.storage.memory import MemoryStorage
|
||||
|
||||
from bot.clients.budget_api import BudgetApiClient
|
||||
from bot.config import settings
|
||||
from bot.handlers.budget import router as budget_router
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def create_bot() -> Bot:
|
||||
if settings.proxy_url:
|
||||
logger.info("Using proxy for Telegram API: %s", settings.proxy_url)
|
||||
session = AiohttpSession(proxy=settings.proxy_url)
|
||||
else:
|
||||
session = AiohttpSession()
|
||||
return Bot(token=settings.bot_token, session=session)
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
budget_service = BudgetApiClient(
|
||||
base_url=settings.api_base_url,
|
||||
api_token=settings.api_token,
|
||||
)
|
||||
await budget_service.start()
|
||||
|
||||
bot = create_bot()
|
||||
dp = Dispatcher(storage=MemoryStorage())
|
||||
dp["budget_service"] = budget_service
|
||||
dp.include_router(budget_router)
|
||||
|
||||
try:
|
||||
logger.info("Bot started (API %s)", settings.api_base_url)
|
||||
await dp.start_polling(bot)
|
||||
finally:
|
||||
await budget_service.close()
|
||||
await bot.session.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user