Данный репозиторий содержит ботов, с помощью которых можно проводить викторины в "Telegram" и "VKontakte".
Пример работы бота для Telegram:
Пример работы бота для Вконтакте:
Для запуска ботов нужен предустановленный Python версии не ниже 3.7+ (на других версиях не проверялся). Также в программе используются следующие сторонние библиотеки:
- vk-api https://github.com/python273/vk_api;
- python-telegram-bot https://github.com/python-telegram-bot/python-telegram-bot.
- redis-py https://github.com/andymccurdy/redis-py.
- python-dotenv https://github.com/theskumar/python-dotenv.
Рекомендуется устанавливать зависимости в виртуальном окружении, используя virtualenv, virtualenvwrapper или venv.
- Скопируйте репозиторий в текущий каталог. Воспользуйтесь командой:
$ git clone https://github.com/igorzakhar/quiz-bot.git
После этого программа будет скопирована в каталог quiz-bot
- Создайте и активируйте виртуальное окружение:
$ cd quiz-bot# Переходим в каталог с программой
$ python3 -m venv my_virtual_environment # Создаем виртуальное окружение
$ source my_virtual_environment/bin/activate # Активируем виртуальное окружение
- Установите сторонние библиотеки из файла зависимостей:
$ pip install -r requirements.txt # В качестве альтернативы используйте pip3
-
Создать бота в Telegram. Бот в Telegram создается при помощи другого бота под названием BotFather. Отправляем ему команду
/newbot
, выбираем имя, которое будет отображаться в списке контактов, и адрес. BotFather пришлет в ответ сообщение с токеном. -
Заведите аккаунт в Redislabs и создайте базу данных. После создания вы получите адрес базы данных вида:
redis-13965.f18.us-east-4-9.wc1.cloud.redislabs.com
, его порт вида:16635
(порт указан прямо в адресе, через двоеточие) и его пароль. -
Создайте группу (сообщество) в соц. сети "ВКонтакте".
- Создайте
.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
[рОттен-рОу] - посыпанной песком дорожке в Гайд-парке: девушек отпускали
без провожатого, считая, что они как бы находятся под присмотром... Кого?
Ответ:
Лошади.
$ python3 tg_quiz_bot.py
$ python3 vk_quiz_bot.py