/quiz-bot

Пример чат-бота для проведения викторины.

Primary LanguagePython

Бот-викторина

Данный репозиторий содержит ботов, с помощью которых можно проводить викторины в "Telegram" и "VKontakte".

Пример работы бота для Telegram:

Telegram animation

Пример работы бота для Вконтакте:

VKontakte animation

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

Для запуска ботов нужен предустановленный Python версии не ниже 3.7+ (на других версиях не проверялся). Также в программе используются следующие сторонние библиотеки:

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

  1. Скопируйте репозиторий в текущий каталог. Воспользуйтесь командой:
$ git clone https://github.com/igorzakhar/quiz-bot.git

После этого программа будет скопирована в каталог quiz-bot

  1. Создайте и активируйте виртуальное окружение:
$ cd quiz-bot# Переходим в каталог с программой
$ python3 -m venv my_virtual_environment # Создаем виртуальное окружение
$ source my_virtual_environment/bin/activate # Активируем виртуальное окружение
  1. Установите сторонние библиотеки из файла зависимостей:
$ pip install -r requirements.txt # В качестве альтернативы используйте pip3

Настройка приложения

  1. Создать бота в Telegram. Бот в Telegram создается при помощи другого бота под названием BotFather. Отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов, и адрес. BotFather пришлет в ответ сообщение с токеном.

  2. Заведите аккаунт в Redislabs и создайте базу данных. После создания вы получите адрес базы данных вида: redis-13965.f18.us-east-4-9.wc1.cloud.redislabs.com, его порт вида: 16635(порт указан прямо в адресе, через двоеточие) и его пароль.

  3. Создайте группу (сообщество) в соц. сети "ВКонтакте".

  • Получите токен группы в настройках сообщества: VKontakte API key

  • Так же в настройках нужно разрешить отправку сообщений: VKontakte send message setting

  1. Создайте .env файл c необходимыми параметрами, такими как:
TELEGRAM_TOKEN=
REDIS_HOST=
REDIS_PORT=
REDIS_PASSWORD=
VK_TOKEN=

Добавление вопросов для бота

Для хранения вопросов используется база данных Redis, которая распологается в облаке (Redislabs). Для загрузки вопросов в Redis используйте скрипт redis_questions_upload.py.

Вопросы для ботов должны размещаться в текстовых файлах с кодировкой KOI-8R. Сами файлы должны находиться в каталоге quiz-questions. Разделы файла (Вопросы и ответы)должны быть разделены двумя символами перевода строки \n\n. Пример:

Вопрос 1:
Герой фантастической книги Энди Уэйра "Марсианин" - можно сказать,
современный Робинзон: оставленный на Марсе с минимумом припасов, он
должен продержаться четыре года до прибытия экспедиции. Через несколько
месяцев герой выясняет, что, по современному земному законодательству,
является колонизатором Марса, поскольку первым стал заниматься на Марсе
ТАКИМИ работами. Какими именно?

Ответ:
Сельскохозяйственными.

Вопрос 2:
Молодой джентльмен викторианской эпохи мог увидеться и перекинуться
словом с понравившейся девушкой в отсутствие свахи, тетушки, матушки или
служанки только во время прогулки по так называемой Rotten-Row
[рОттен-рОу] - посыпанной песком дорожке в Гайд-парке: девушек отпускали
без провожатого, считая, что они как бы находятся под присмотром... Кого?

Ответ:
Лошади.

Запуск приложения

1. Запуск бота Telegram:
$ python3 tg_quiz_bot.py
2. Запуск бота VKontakte:
$ python3 vk_quiz_bot.py