Skip to content

Araime/quiz-bot

Repository files navigation

Чат-бот для проведения викторин в Telegram и Вконтакте.

Для работы скрипт открывает файл с вопросами, которые потом задаёт пользователю. Скрипт состоит из нескольких частей: бот для общения в Telegram, бот для общения в группе во Вконтакте, обработка логов, загрузка словаря с вопросами и ответами. Бот используют базу данных Redis, сохраняет id пользователя и заданный ему вопрос, благодаря чему бот помнит, какой вопрос задавал какому пользователю. В проект входят: дополнительный telegram-бот для получения сообщений об ошибках, отдельный скрипт для загрузки вопросов и ответов. Для удобства добавлена клавиатура, которая динамически меняет кнопки, в зависимости от этапа диалога.

vk-bot tg-bot

Пример чат-бота telegram.

Как установить

Скачать

Python3 должен быть уже установлен. Скачать этот репозиторий себе на компьютер.

Рекомендуется использовать virtualenv/venv для изоляции проекта.

Быстрая настройка venv

Начиная с Python версии 3.3 виртуальное окружение идёт в комплекте в виде модуля venv. Чтобы его установить и активировать нужно выполнить следующие действия в командной строке:

Указать скачанный репозиторий в качестве каталога.

cd C:\Usersаш_пользователь\Downloads\папка_репозитория

Установить виртуальное окружение в выбранном каталоге.

Python -m venv env

В репозитории появится папка виртуального окружения env

image

Активировать виртуальное окружение.

env\scripts\activate

Если всё сделано правильно, вы увидите в командной строке (env) слева от пути каталога.

2

Установить зависимости

Используйте pip (или pip3, есть конфликт с Python2) для установки зависимостей:

pip install -r requirements.txt

Получение токенов, ключей, создание базы данных Redis

  1. Создать двух ботов для Telegram, получить их токены у Отца Ботов.
    Один для общения, другой для сбора логов.
  2. Получить свой chat_id у телеграм-бота userinfobot.
  3. Создайте группу в Vk, она будет доступна во вкладке управление. В настройках группы включите отправку сообщений, создайте ключ доступа. 8
  4. Перейти в «Управление сообществом» -> «Сообщения» -> «Настройки бота» и включить «функции бота».
    8
  5. Зарегистрироваться на Redis. Создать новую базу данных(new subscription), тип базы - облачный, бесплатный 30 мегабайт. Возьмите оттуда информацию: host, port, пароль от БД. (пример на фото) agent

Переменные окружения

Создайте в корне репозитория файл .env и добавьте в него следующие строки:

TG_DIALOG_BOT=Токен_телеграм_бота
TG_SERVICE_BOT=Токен_бота_логов
TG_CHAT_ID=Чайт_ID_бота_логов
VK_GROUP_TOKEN=Токен_группы_вк
REDIS_HOST=Хост_БД_redis
REDIS_PORT=Порт_БД_redis
REDIS_PASS=Пароль_БД_redis
FOLDER=Имя_папки_с_вопросами

В папке questions лежит файл примеров вопросов, обычный файл sample.txt. Можно указать эту папку в качестве папки с вопросами.

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

FOLDER=questions

Запуск локально

Telegram-бот:

python tg_bot.py

Vk-бот:

python vk_bot.py

Деплой и запуск на Heroku

  1. Зарегистрируйтесь на Heroku и создайте приложение (app):

Screenshot-from-2019-04-10-17-43-30

  1. Опубликуйте код репозитория на свой GitHub.
  2. Привяжите свой аккаунт на GitHub к Heroku:

123

  1. Задеплойте проект на Heroku:

5353

  1. В разделе Resources включите ботов vk и telegram:

666

  1. Перейдите в раздел Settings и в пункте Config Vars укажите из вашего файла .env TG_DIALOG_BOT, TG_SERVICE_BOT, TG_CHAT_ID, VK_GROUP_TOKEN, REDIS_HOST, REDIS_PORT, REDIS_PASS, FOLDER:

8

  1. Задеплоить повторно(пункт 4).

Вы увидите сообщение о запуске в чате бота-логгера:

agent

Создания файла с вопросами и ответами

Идеальным примером для создания файла с вопросами и ответами является sample.txt, в папке questions. По его образу, с сохранениями пробелов и отступов, необходимо создать свой файл и указать путь к нему(папку), или положить его в папку questions и указать её. Скрипт циклом проходит по указанной папке, если файл имеет формат txt и в кодировке UTF-8, он открывается и его содержимое добавляется в общий список вопросов. Если файл будет отличаться по структуре, вам придётся переписать скрипт quiz_content_handler.py под свои нужды.

Работа с ботом из командной строки

Установить консольный CLI client.

Быстрый старт CLI:

Примечание: для Windows можно открыть командную строку cmd и работать в ней.

Подключение к Heroku:

heroku login

Посмотреть список своих приложений:

heroku apps

Посмотреть логи:

heroku logs --app=имя_приложения

Статус бота:

heroku ps -a имя_приложения

Руководство по Heroku CLI.

Цель проекта

Код написан в учебных целях, это часть курса по созданию чат-ботов на сайте веб-разработчиков Девман.