Это шаблон для создания 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 с описанием изменений.