Code Monkey home page Code Monkey logo

quiz-bot-s's Introduction

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

Данный репозиторий содержит ботов, с помощью которых можно проводить викторины в "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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.