Skip to content

Repository files navigation

Support Bot

Python Telegram Bot API VK API Dialogflow systemd License

Поддержка в Telegram и ВКонтакте на базе Google Dialogflow.

Демо

Демо диалога с ботом

Попробовать

Что умеет бот

Бот отвечает на типовые вопросы пользователей в Telegram и ВКонтакте:

  • отвечает на приветствия;
  • рассказывает, как устроиться на работу;
  • понимает разные формулировки вопроса благодаря Dialogflow.

Если Dialogflow не понял сообщение во ВКонтакте — бот молчит, чтобы не мешать операторам техподдержки.

Что такое Dialogflow

Dialogflow — облачный сервис Google для распознавания намерений в тексте. Бот передаёт сообщение в Dialogflow, тот сопоставляет его с интентом по тренировочным фразам из phrases.json и возвращает готовый ответ. Интенты загружаются через API скриптом create_intent.py — без ручного ввода в консоли.

Зачем это нужно

Бот отвечает на типовые вопросы пользователей в Telegram и ВКонтакте, понимая намерения с помощью Dialogflow. Вопросы-интенты загружаются из phrases.json через API, поэтому обучение не требует ручного ввода в консоли Dialogflow. Если бот не понимает пользователя во ВКонтакте — он молчит, чтобы не мешать операторам техподдержки.

Как реализовано

Бот работает как systemd-сервис на Linux-сервере. Telegram- и VK-боты запускаются как отдельные сервисы, оба используют общий клиент Dialogflow.

Используемые инструменты

Инструмент Зачем
aiogram Telegram Bot API
vk_api Long Poll API ВКонтакте
google-cloud-dialogflow Распознавание намерений и ответы
python-dotenv Загрузка переменных окружения из .env
systemd Запуск и автоперезапуск сервисов (Restart=always)

Быстрый старт

  1. Скопировать .env.example в .env и заполнить токены:

    TELEGRAM_BOT_TOKEN=токен_от_@BotFather
    VK_GROUP_TOKEN=токен_группы_ВК
    DIALOGFLOW_PROJECT_ID=ваш_project_id
    GOOGLE_APPLICATION_CREDENTIALS=application_default_credentials.json
    

    .env добавлен в .gitignore и не попадёт в репозиторий.

  2. Установить зависимости:

    python -m venv .venv
    .venv\Scripts\Activate.ps1          # Windows
    # source .venv/bin/activate          # Linux
    pip install -r requirements.txt
  3. Загрузить интенты в Dialogflow:

    python create_intent.py

    Путь к файлу с интентами можно задать аргументом (по умолчанию phrases.json):

    python create_intent.py --phrases-file my_phrases.json

Запуск

Telegram бот

python telegram_bot.py

VK бот

python vk_bot.py

Деплой на сервер (Linux + systemd)

  1. Скопировать проект на сервер:

    cd /opt && git clone <url-репозитория> support-bot
  2. Создать venv и поставить зависимости:

    cd /opt/support-bot
    python3 -m venv .venv
    .venv/bin/pip install -r requirements.txt
  3. Создать .env на сервере (см. выше). Укажите GOOGLE_APPLICATION_CREDENTIALS абсолютным путём к файлу ключей.

  4. Установить systemd-юниты:

    sudo cp deploy/support-bot-*.service /etc/systemd/system/
    sudo systemctl daemon-reload
    sudo systemctl enable --now support-bot-telegram support-bot-vk

    Ключевые моменты:

    • Restart=always — systemd поднимет бота, если он упал
    • RestartSec=10 — пауза 10 секунд перед перезапуском
    • WorkingDirectory — нужно указать реальный путь к проекту
    • ExecStart — путь к Python из виртуального окружения (bin/python, не просто python)

Полезные команды

# Статус сервисов
systemctl status support-bot-telegram support-bot-vk

# Остановить / перезапустить
sudo systemctl restart support-bot-telegram
sudo systemctl restart support-bot-vk

# Логи
journalctl -u support-bot-vk -f

Файлы проекта

Файл Назначение
telegram_bot.py Telegram бот (aiogram + Dialogflow)
vk_bot.py VK бот (vk_api longpoll + Dialogflow)
dialogflow_client.py Общий клиент Dialogflow
create_intent.py Скрипт загрузки интентов в Dialogflow (путь через --phrases-file)
phrases.json Обучающие фразы и ответы для интентов
deploy/support-bot-telegram.service systemd-юнит Telegram бота
deploy/support-bot-vk.service systemd-юнит VK бота
.env.example Шаблон переменных окружения
requirements.txt Зависимости

Лицензия

MIT

About

Поддержка в Telegram и ВКонтакте на базе Google Dialogflow

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages