Это шаблон для создания Telegram-бота с использованием библиотек:
а также поддержки Redis и многоязычности (i18n). Шаблон предоставляет базовую структуру проекта, включающую работу с планировщиком задач, конфигурацию через переменные окружения и пример использования systemd для автозапуска на сервере.
- Базовая структура: четкое разделение логики бота, планировщика и настроек.
- Redis: интеграция для кэширования и хранения данных.
- Postgres: поддержка для работы с базой данных.
- Sqlalchemy: ORM для работы с базой данных.
- i18n: поддержка многоязычных сообщений.
- Systemd Unit-файлы: примеры для автозапуска бота и планировщика на Linux (Ubuntu).
- Docker: поддержка контейнеризации через Docker Compose.
- Python 3.10 или выше
- Redis
- PostgreSQL
- Docker и Docker Compose (для запуска в контейнерах)
- Ubuntu (для установки и настройки на сервере)
git clone https://github.com/Solarmove/aiogram_bot_template.git
cd aiogram_bot_template
Скопируйте пример файла окружения и отредактируйте его в соответствии с вашими настройками:
cp .env.example .env
nano .env
Или Vim:
vim .env
Заполните необходимые данные (токен бота, настройки подключения к Redis и Postgres и т.д.).
Для запуска всех компонентов в Docker-контейнерах:
docker-compose up --build -d
Это запустит бота, PostgreSQL и Redis в отдельных контейнерах с правильной конфигурацией.
Запуск планировщика:
arq scheduler.main.WorkerSettings
В папке systemd находятся примеры unit-файлов для запуска бота и планировщика. Скопируйте файлы в
директорию /etc/systemd/system/
:
sudo cp systemd/aiogram_bot.service /etc/systemd/system/
sudo cp systemd/aiogram_scheduler.service /etc/systemd/system/
Перезагрузите systemd и запустите сервисы:
sudo systemctl daemon-reload
sudo systemctl start aiogram_scheduler.service
Для автоматического запуска при загрузке системы выполните:
sudo systemctl enable aiogram_scheduler.service
├── bot/ # Основной код бота
├── scheduler/ # Код планировщика задач
│ ├── main.py # Настройки ARQ-воркера
│ └── func.py # Функции для планировщика
├── systemd/ # Unit-файлы для systemd
├── .env.example # Пример файла с переменными окружения
├── docker-compose.yml # Конфигурация Docker Compose
└── README.md # Документация проекта
В проект включен файл docker-compose.yml
, который настраивает три сервиса:
- bot - основной сервис с ботом, собирается из текущего каталога
- postgres - база данных PostgreSQL 15 с сохранением данных в volume
- redis - Redis 7 для кэширования и очередей
Переменные окружения передаются из файла .env
.
Планировщик задач ARQ настроен в модуле scheduler
. Для добавления новых задач:
- Создайте функцию в
scheduler/func.py
- Зарегистрируйте её в
WorkerSettings.functions
вscheduler/main.py
- Для периодических задач используйте
WorkerSettings.cron_jobs
- Добавление логики: Расширяйте функциональность бота, добавляя новые хэндлеры и команды в
директории
bot/
. - Планировщик: Используйте модуль
scheduler
для выполнения периодических задач. (Документация) - Многоязычность: Добавляйте файлы переводов и используйте встроенную поддержку i18n для локализации сообщений.
Если у вас есть идеи или улучшения:
- Сделайте fork репозитория.
- Создайте новую ветку для своей функциональности.
- Отправьте pull request с описанием изменений.