-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
56 lines (42 loc) · 1.52 KB
/
Copy pathmain.py
File metadata and controls
56 lines (42 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import asyncio
import logging
from aiogram import Bot, Dispatcher
from aiogram.client.default import DefaultBotProperties
from aiogram.enums import ParseMode
from app.config import config
from app.db import Database
from app.middlewares import DatabaseMiddleware, LoggingMiddleware, UserRegistrationMiddleware
from app.handlers import get_routers
async def main():
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - [%(name)s] - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
logger.info("🚀 Bot ishga tushmoqda...")
bot = Bot(
token=config.bot.token,
default=DefaultBotProperties(parse_mode=ParseMode.HTML)
)
dp = Dispatcher()
db = Database()
await db.connect()
dp.message.middleware(DatabaseMiddleware(db))
dp.callback_query.middleware(DatabaseMiddleware(db))
dp.message.middleware(LoggingMiddleware())
dp.message.middleware(UserRegistrationMiddleware())
for router in get_routers():
dp.include_router(router)
logger.info("✅ Bot muvaffaqiyatli ishga tushdi!")
logger.info(f"👨💼 Adminlar: {config.bot.admin_ids}")
try:
await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())
finally:
await db.disconnect()
await bot.session.close()
logger.info("🛑 Bot to'xtatildi")
if __name__ == "__main__":
try:
asyncio.run(main())
except KeyboardInterrupt:
print("\n🛑 Bot to'xtatildi!")