-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
31 lines (20 loc) · 2.21 KB
/
main.py
File metadata and controls
31 lines (20 loc) · 2.21 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
import asyncio # мне понадобится асинхронность
import logging # подключил журнал в терминал
from aiogram import Bot, Dispatcher # Bot → «объект, который умеет говорить с Telegram». Dispatcher → «объект, который распределяет сообщения»
from aiogram.methods import DeleteWebhook
from aiogram.fsm.storage.memory import MemoryStorage
from app.config import BOT_TOKEN
from app.handlers import router # router → «набор правил: кто на какие сообщения отвечает»
from app.db import init_db
# НА ЭТОМ ЭТАПЕ ПОДГОТОВИЛИ "ДЕТАЛИ"
logging.basicConfig(level=logging.INFO) # Показывай сообщения уровня INFO и выше
async def main():
await init_db()
bot = Bot(token=BOT_TOKEN) # Создаю объект bot, который умеет: отправлять сообщения, получать апдейты, общаться с Telegram API. ⚠️ Здесь нет подключения к Telegram, просто объект.
dp = Dispatcher(storage=MemoryStorage())
# Создаю диспетчер — он будет: принимать события, решать, какой хендлер запускать
dp.include_router(router) # Подключаю набор правил (router), где написано: если /start → делай X, если текст → делай Y. 📌 Без этого бот бы молчал, даже если Telegram присылал сообщения
await bot(DeleteWebhook(drop_pending_updates=True)) #Telegram, забудь старые сообщения, которые накопились, пока бот был выключен
await dp.start_polling(bot) # 🔥 ВОТ ЗДЕСЬ БОТ ОЖИЛ. Запускаю бесконечный цикл: спрашиваю есть новые сообщения, если есть, то передаю диспечеру
if __name__ == "__main__": # Этот файл запущен напрямую, а не импортирован — значит, можно стартовать
asyncio.run(main())