Начальный экран бота — приветствие и вводное сообщение
├── .dockerignore
├── .env.example
├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
├── assets
│ └── images
│ ├── documents.jpg
│ ├── feedback.jpg
│ ├── other.jpg
│ ├── redbutton.jpg
│ ├── study.jpg
│ ├── support.jpg
│ ├── support_received.jpg
│ ├── tech_issues.jpg
│ └── welcome.jpg
├── dev
│ ├── dir_tree.py
│ └── watchdog_runner.py
├── docker-compose.yml
├── main.py
├── requirements.txt
├── src
│ ├── bot.py
│ ├── handlers
│ │ ├── admin_commands.py
│ │ ├── admin_handler.py
│ │ ├── callback_handler.py
│ │ ├── feedback_handler.py
│ │ └── start_handler.py
│ ├── keyboards
│ │ ├── identity.py
│ │ ├── main_menu.py
│ │ └── reply.py
│ ├── services
│ │ ├── google_sheets.py
│ │ ├── message_service.py
│ │ ├── redis_client.py
│ │ └── state_manager.py
│ └── utils
│ ├── categories.py
│ ├── config.py
│ ├── filter_profanity.py
│ ├── helpers.py
│ ├── logger.py
│ └── media_utils.py
├── tests
│ ├── __init__.py
│ └── test_profanity_filter.py
flowchart TD
U[Пользователь] -->|Нажимает кнопку| B[Бот]
B --> M[[Главное меню]]
%% Информационные категории
M -->|Документы| I1[Отправляет инфо-сообщение]
M -->|Учебный процесс| I2[Отправляет инфо-сообщение]
M -->|Служба заботы| I3[Отправляет инфо-сообщение]
%% Рабочая категория
M -->|Другое| SM[[Подменю]]
SM -->|Проблемы с техникой| G[Пользователь описывает техническую проблему]
SM -->|Обратная связь| A[Пользователь формулирует свой вопрос]
SM -->|Срочная помощь| E[Пользователь описывает экстренную ситуацию]
%% Процесс обработки
G & A & E -->|Ответ админа| B
B -->|Анонимный ответ| U
B -->|Запись| T[(Google Таблица)]
%% Стилизация для тёмной темы
style M fill:#2b3d4f,stroke:#3a7bd5
style SM fill:#3a5169,stroke:#00d2ff
style I1,I2,I3 fill:#1e2b37,stroke:#607d8b
style T fill:#00695c,stroke:#4db6ac
%% Легенда
subgraph Legend
direction TB
L1[Главное меню]:::main
L2[Подменю]:::sub
L3[Инфо-ответы]:::info
L4[Данные]:::data
end
classDef main fill:#2b3d4f,stroke:#3a7bd5
classDef sub fill:#3a5169,stroke:#00d2ff
classDef info fill:#1e2b37,stroke:#607d8b
classDef data fill:#00695c,stroke:#4db6ac
- Создан и заполнен файл
.envс необходимыми переменными окружения:BOT_TOKEN— токен Telegram ботаGROUP_CHAT_ID— ID группы для сообщенийSERVICE_ACCOUNT— путь к файлу с Google сервисным аккаунтомSPREADSHEET_ID— ID Google таблицы
-
Клонируйте репозиторий и перейдите в папку проекта:
git clone https://github.com/YanKarpov/HelpyBot.git cd HelpyBot -
Создайте файл
.envна основе примера.env.exampleи заполните все переменные. -
Запустите сервисы (бот и Redis) с помощью Docker Compose:
docker-compose up --build
-
Бот запустится и подключится к Redis, готов принимать сообщения.
-
Создайте виртуальное окружение и активируйте его:
python3 -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows
-
Установите зависимости:
pip install -r requirements.txt
-
Создайте и заполните
.envс переменными окружения (как описано выше). -
Запустите Redis (локально или через Docker):
docker run -d -p 6379:6379 --name redis redis:7
-
Запустите бота:
python main.py
Для запуска тестов используется pytest:
pytest tests/