Бот технической поддержки для Telegram и ВКонтакте, использующий Google Dialogflow для распознавания намерений и автоматических ответов на вопросы пользователей.
Демо Telegram бота: https://t.me/demo_spprt_bot
Демо VK бота: https://vk.ru/club237694014
Боты запускаются независимо друг от друга и могут работать одновременно.
- Автоматические ответы на частые вопросы через Dialogflow
- Поддержка двух платформ: Telegram и ВКонтакте
- Пропуск fallback-интентов в VK боте (бот молчит, если не понял пользователя)
- Логирование в файл с ротацией и опциональные уведомления об ошибках в Telegram
- Поддержка HTTP-прокси
Скрипт тестировался на версии Python 3.12 и может некорректно работать на более поздних версиях. Для Windows и Mac нужную версию можно скачать по ссылке. Для Linux установка альтернативной версии Python осуществляется средствами pyenv.
Для установки зависимостей выполните команду:
pip install -r requirements.txt
Для установки dev-зависимостей (линтеры, форматтеры, pre-commit):
pip install -r requirements-dev.txt
pre-commit install
- Создайте проект в Google Cloud Console
- Включите Dialogflow API
- Создайте сервисный аккаунт и скачайте JSON-ключ
- Подготовьте файл с интентами в формате
questions.json
Для загрузки интентов в Dialogflow выполните:
python create_intents.py questions.json
Для корректной работы создайте файл .env в корне проекта на основе .env.example:
- BOT_TOKEN — токен Telegram бота. Создание бота и получение токена делается через BotFather. Подробнее в официальной инструкции
- VK_GROUP_TOKEN — токен сообщества ВКонтакте. Получить можно в настройках группы: Управление → Работа с API → Токены
- GOOGLE_CLOUD_PROJECT_ID — идентификатор проекта Google Cloud
- GOOGLE_APPLICATION_CREDENTIALS — путь к JSON-файлу с ключами сервисного аккаунта Google Cloud
- DEBUG — включение отладочного режима (
True/False). По умолчаниюFalse - USE_PROXY — включение HTTP-прокси (
True/False). По умолчаниюFalse - BOT_PROXY — адрес прокси в формате
http://ip:port. Игнорируется, еслиUSE_PROXY=False - TELEGRAM_LOG_BOT_TOKEN — (опционально) токен Telegram бота для отправки логов
- TELEGRAM_LOG_CHAT_ID — (опционально) id чата для получения логов. Если указан только один из параметров, Telegram-логирование не будет активировано
- LOG_FILENAME — путь к файлу логов. По умолчанию
bot.log
Пример содержания файла .env:
BOT_TOKEN=your_tg_bot_token
VK_GROUP_TOKEN=your_vk_group_token
GOOGLE_CLOUD_PROJECT_ID=your-project-id
GOOGLE_APPLICATION_CREDENTIALS=path/to/credentials.json
DEBUG=False
USE_PROXY=False
BOT_PROXY=http://some-proxy-address:port
TELEGRAM_LOG_BOT_TOKEN=optional_bot_token_for_logs
TELEGRAM_LOG_CHAT_ID=optional_chat_id_for_logs
LOG_FILENAME=bot.log
Запуск Telegram бота:
python tg_bot.py
Запуск VK бота:
python vk_bot.py