rs0x069 / game_verbs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Бот-помощник онлайн-издательства "Игра слов"

Бот-помощник онлайн-издательства "Игра слов" для VK и Telegram, который отвечает на типичные вопросы пользователей. Бот обучаем нейросетью. Бот работает на сервисе Heroku.

Требования

Python 3.8, 3.9 или 3.10.

Зависимые модули

  • google-cloud-dialogflow==2.14.0
  • python-dotenv==0.20.0
  • python-telegram-bot==13.12
  • requests==2.27.1
  • vk-api==11.9.8

Предварительные требования

  1. Для телеграм бота необходимо создать бота в Телеграм и получить токен. Разрешить боту отправлять вам уведомления.
  2. Для бота в VK необходимо создать сообщество в VK. В настройках сообщества включить сообщения и создать ключ API. Пользователям нужно разрешить сообществу отправлять им сообщения.
  3. На Google Cloud Platform создать проект, создать ключ API и скачать его в виде файла, создать агента в DialoFlow и обучить его. Для обучения агента можно запустить скрипт manage_intents.py, которые обучит его фразами и ответами из файла questions.json.

Установка

  • Склонировать проект
https://github.com/rs0x069/game_verbs.git
  • Перейти в папку game_verbs
  • Установить пакеты
pip install -r requirements.txt
  • Создать файл .env со следующими переменными окружения:
    • TELEGRAM_TOKEN - токен телеграм бота.
    • TELEGRAM_RECIPIENT_CHAT_ID - id чата в Телеграм, в который бот будет отправлять ошибки.
    • VK_TOKEN - ключ API из VK.
    • GOOGLE_APPLICATION_CREDENTIALS - имя файла с регистрационными данными из Google Cloud Platform. Этот файл должен лежать в папке проекта.
    • GOOGLE_DIALOGFLOW_PROJECT_ID - код проекта в Google Cloud Platform

Использование

  • Для запуска телеграм бота запустить скрипт bot_tg.py
python bot_tg.py
  • Для запуска бота VK запустить скрипт bot_vk.py
python bot_vk.py
  • Для обучения агента в DialogFlow фразами и ответами из файла questions.json запустить скрипт manage_intents.py
python manage_intents.py

Можно указать путь вручную, для этого нужно воспользоваться аргументом -f или --file_name:

python manage_intents.py -f /path/filename.json

Пример файла:

{
  "Устройство на работу": {
    "questions": [
      "Как устроиться к вам на работу?",
      "Как устроиться к вам?",
      "Хочу работать редактором у вас",
    ],
    "answer": "Если вы хотите устроиться к нам, напишите на почту game-of-verbs@gmail.com ..."
  },
  ...
}

Запуск в Докер

  • На компьютере должен быть установлен docker
  • Подготовить файл с переменными окружения .env (описание переменных см. в разделе Установка)
  • Положить файл с регистрационными данными из Google Cloud Platform в папку с проектом или прокинуть этот файл как volume в докер-контейнер в директорию /app/. Указать имя этого файла в файле .env в переменной GOOGLE_APPLICATION_CREDENTIALS.
  • Находясь в папке с проектом выполнить команду (запустятся боты telegram и vk):
docker compose up -d
  • Если в command указать telegram, то запустится бот telegram, если указать vk, то запустится бот vk (см. пример файла docker-compose.yml)

Пример файла docker-compose.yml

version: '3.9'

services:
  bot_telegram:
    build: .
    command: telegram
    env_file:
      - ./.env

  bot_vk:
    build: .
    command: vk
    env_file:
      - ./.env

Примеры

Пример результата для Telegram:

Пример результата для Telegram

Пример результата для ВКонтакте:

Пример результата для ВКонтакте


Учебный проект для курсов web-разработчиков dvmn.

About


Languages

Language:Python 90.2%Language:Dockerfile 6.5%Language:Shell 2.7%Language:Procfile 0.6%