Проект Telegram Эхо Бот сделанный на aiogram, предназначенный для демонстрации
практической интеграции с реляционной базой данных (PostgreSQL) и Redis.
Бот включает в себя управление ролями пользователей, выбор языка, и админ-инструменты
для модерации и аналитики пользователей.
- Эхо ответы: Ответы на все пользовательские сообщения.
- Регистрация пользователя: Автоматически сохраняет новых пользователей в таблице
users. - Отслеживание активности: Отслеживает взаимодействие пользователей за день в таблице
statistics. - Многоязычный интерфейс: Позволяет пользователям устанавливать язык интерфейса (EN/RU).
- Ролевое поведение: Различает постоянных пользователей и администраторов.
/ban <@username|user_id>: Забанить пользователя./unban <@username|user_id>: Разблокировать пользователя./statistics: Просмотр лучших активных пользователей.
- Python 3.13 — Основной язык проекта.
- aiogram – Асинхронная библиотека для ботов Telegram на Python.
- PostgreSQL – Реляционная база данных для сохранения информации о пользователях и их активности.
- Redis – FSM хранилище для aiogram.
- pgAdmin – Визуальное управление базами данных для PostgreSQL.
- Docker — Используется для запуска инфраструктурных сервисов, таких как PostgreSQL, Redis, и pgAdmin.
В проекте используется Docker Compose для запуска PostgreSQL, Redis, и pgAdmin.
- Клонирование репозитория:
git clone https://github.com/DonBenn/echo_db_bot.git- Перейти в папку
echo_db_bot:
cd echo_db_bot-
Создайте файл .env и скопируйте код из файла .env.example в него.
-
Заполните файл .env реальными данными (
BOT_TOKEN,POSTGRES_USER,POSTGRES_PASSWORD, и т.д.) -
Запуск контейнеров с Postgres, Redis, и pgAdmin с командой:
docker compose up -d-
Создайте виртуальное окружение в корне проекта и активируйте его.
-
Установите необходимые библиотеки в виртуальном окружении с
pip:
pip install -r requirements.txt- Примените миграции базы данных с помощью команды:
python3 -m migrations.create_tables- Запустите main.py для запуска бота:
python3 main.py- Запуск в приложении Telegram
Выберете бота в Telegram. Для запуска, выполните в боте команду
/start
- Добавляет пользователя в таблицу пользователей, если он не существует.
- Записывает начальный язык.
- Назначает роль пользователя или администратора.
- Регистрирует активность в статистике.
- Отображает
/helpсообщение иMenu.
- Показывает удобное для пользователя описание команд (переведённое).
- Регистрирует активность в статистике.
- Позволяет пользователю выбрать язык интерфейса (EN/RU).
- Обновляет БД и надписи на кнопках соответственно.
- Заблокировать/разблокировать по @username или user_id.
- Обрабатывает валидацию ввода.
- Статус пользователя обновляется до
is_alive=falseесли бот заблокирован. - Все роли и блокировки управляются базой данных; доступ не задается жестко.