Авторские права на сайт принадлежат Данилу и Евгению Гилядовым
Вот пример типичной архитектуры приложения чат-бота на фреймворке aiogram с объяснением компонентов
1. Файл запуска bot.py
Содержит создание объектов бота и диспетчера, регистрацию хендлеров, запуск pooling:
```python
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
bot = Bot(token=TOKEN)
dp = Dispatcher(bot, storage=MemoryStorage())
# импорт хендлеров
import handlers
# регистрация хендлеров
dp.register_message_handler(handlers.start, commands=["start"])
dp.register_callback_query_handler(handlers.button)
if __name__ == "__main__":
dp.start_polling()
```
2. Конфиг констант config.py
Хранит константы, параметры подключения к API и сервисам:
```python
TOKEN = "1234567:AAHjhd83YY83..."
REDIS_HOST = "localhost"
REDIS_PORT = 6379
```
3. Обработчики handlers.py
Функции-обработчики событий и запросов от Telegram:
```python
from aiogram import types
async def start(message: types.Message):
await message.answer("Hi!")
async def button(query: types.CallbackQuery):
await bot.answer_callback_query(query.id)
```
4. Файлы конечных автоматов fsm.py
Хранит классы конечных автоматов для диалогов с пользователем:
```python
from aiogram.fsm.state import State, StatesGroup
class OrderFSM(StatesGroup):
item = State()
amount = State()
```
5. Логика задач tasks.py
Фоновые задачи - отправка уведомлений, обработка данных:
```python
from aiogram import Dispatcher
async def send_digest(dp: Dispatcher):
# логика рассылки
```
Такая структура позволяет гибко расширять функционал бота по мере необходимости.