Создание чат-бота в Telegram для платформы интеллектуального волонтерства ProCharity (НКО Фонд Друзья).
Чат-бот @ProCharity_bot
Платформа представляет собой агрегатор волонтерских заданий от различных благотворительных проектов - любой желающий согласно своим желаниям и умениям может откликаться на конкретные предложения благотворительных проектов о волонтерской помощи, в свою очередь благотворительный проект/фонд выбирает из всех откликов подходящих кандидатов.
Чат-бот реализует функционал волонтерской платформы в приложении Telegram - с помощью JSON рассылает подписчикам новые появляющиеся задания от фондов.
Создайте и заполните файл .env
:
# Переменные приложения
BOT_TOKEN= # Токен аутентификации бота
SECRET_KEY= # Cекретный ключ для генерации jwt-токенов
# Переменные базы данных
POSTGRES_DB=procharity_back_db_local # Название базы данных
POSTGRES_USER=postgres # Логин для подключения к базе данных
POSTGRES_PASSWORD=postgres # Пароль для подключения к базе данных
DB_HOST=procharity_postgres # Название хоста с БД
DB_PORT=5432 # Порт для подключения к базе данных
# Organization data
ORGANIZATIONS_EMAIL=procharity@yandex.ru
# Адреса электронной почты администраторов
EMAIL_ADMIN=procharity.admin_1@yandex.ru
Note Полный пример переменных окружения.
Note Для получения токена аутентификации бота обратитесь к разделу Регистрация бота Telegram.
Собрать и запустить контейнеры из файла infra/docker-compose.local.yml.
docker compose -f infra/docker-compose.local.yml up
Эта команда создаст и запустит все необходимые контейнеры, включая базу данных и бэкенд.
После успешного запуска контейнеров, выполните следующую команду, которая войдет в контейнер, выполнит миграции и наполнит тестовую базу данных (включая таблицу пользователей):
docker exec -it procharity_bot_backend sh -c "alembic upgrade head && python3 fill_db.py with_fake_users"
Если тестовая база данных должна содержать только задания и не должна содержать таблицу пользователей, то необходимо выполнить команду:
docker exec -it procharity_bot_backend sh -c "alembic upgrade head && python3 fill_db.py"
Если в тестовую базу нужно добавить пользователей-админов, то необходимо выполнить команду:
docker exec -it procharity_bot_backend sh -c "alembic upgrade head && python3 fill_db.py add_fake_admins"
Клонировать репозиторий.
git clone https://github.com/Studio-Yandex-Practicum/ProCharity_back_2.0.git
cd ProCharity_back_2.0
Установить зависимости и активировать виртуальное окружение.
poetry env use python3.11
poetry install
poetry shell
Настроить pre-commit.
В режиме poetry shell
pre-commit install
Note Перед каждым коммитом будет запущен линтер и форматтер, который автоматически отформатирует код согласно принятому в команде codestyle.
Создайте и заполните файл .env
:
# Переменные приложения
BOT_TOKEN= # Токен аутентификации бота
SECRET_KEY= # Cекретный ключ для генерации jwt-токенов
# Переменные базы данных
POSTGRES_DB=procharity_back_db_local # Название базы данных
POSTGRES_USER=postgres # Логин для подключения к базе данных
POSTGRES_PASSWORD=postgres # Пароль для подключения к базе данных
DB_HOST=localhost # Название хоста с БД
DB_PORT=5432 # Порт для подключения к базе данных
# Organization data
ORGANIZATIONS_EMAIL=procharity@yandex.ru
# Адреса электронной почты администраторов
EMAIL_ADMIN=procharity.admin_1@yandex.ru
Note Полный пример переменных окружения.
Note Для получения токена аутентификации бота обратитесь к разделу Регистрация бота Telegram.
Запустить Docker с БД.
sudo docker compose -f infra/docker-pg.yml up -d
Применить миграции базы данных.
alembic upgrade head
Выполнить скрипт наполнения тестовой базы.
Генерация тестовых данных без таблицы пользователей
python3 fill_db.py
Генерация тестовых данных c таблицей пользователей
python3 fill_db.py with_fake_users
Генерация тестовых данных c таблицей пользователей и таблицей админов
python3 fill_db.py with_fake_users add_fake_admins
Запустить сервер приложения.
uvicorn src:app --reload
После выполнения инструкций, описанных в разделе "Для разработки",
будет запущен FastAPI-сервер по адресу http://localhost:8000.
Также по адресу http://localhost:8000/docs доступна полная документация API.
Данный раздел содержит информацию, которая может быть полезна для разработчиков. Настоятельно рекомендуем каждому прочитать его хотя бы один раз.
Найдите в Telegram бота @BotFather и откройте с ним чат.
Напишите ему /newbot
.
Придумайте и напишите название бота. Оно будет отображаться в контактах и
чатах. Например: My Dev Bot
.
Придумайте и напишите юзернейм. Он используется для упоминания бота и в
ссылках. Юзернейм должен быть на латинице и обязательно заканчиваться на
«bot». Например: my_dev_bot
.
Готово. @BotFather пришлет токен бота — его нужно
скопировать в переменную окружения BOT_TOKEN
(см. в разделе "Установка и Запуск").