Code Monkey home page Code Monkey logo

tg-bot-quiz's Introduction

tg-bot-quiz

Код телеграм бота, который способен доставлять в существующих им чатах, вопросы (quiz). Ничто не мешает запустить своего бота со своими вопросами (будет инструкция).

Возможности

  • Приветствовать как в личных сообщениях, так и при заходе в чат
  • Записывает текст с личных сообщений (журнал предложений)
  • Выставление в вопросе хештега (метка для поиска старых вопросов)
  • Счетчик отправленных вопросов (чтобы не повторялся старый)
  • Если вопросы кончатся, будет выбираться рандомный (когда появится новый вопрос, он будет следующим)
  • Вопрос может содержать markdown и отступы (чтобы в несколько строк и со стилями)

Бонус: всё необходимое в .env.example

Еще пишу... В работе...

Установка

  1. Склонировать репозиторий -> git clone https://github.com/FromSi/tg-bot-quiz.git
  2. Зайти в проект -> cd tg-bot-quiz
  3. Сделать -> cp .env.example .env
  4. Добавить в .env файл токен бота
  5. Запуск бота -> make run
  6. Настроить в CRON команду для создания вопроса -> make create_quiz

Запуск бота

Бота нужно запускать через Makefile.

Запуск message_handler.pymake run

Остановка message_handler.pymake stop

Запуск create_quiz.pymake create_quiz (перед этим нужно запустить message_handler.py)

Две входные точки

Существуют две входные точки message_handler.py и create_quiz.py.

message_handler.py

Точка запускается с Docker'ом. Он обрабатывает регистрацию в приватных диалогах пользователей и чатов.

create_quiz.py

Точку необходимо запускать в ручную, через скрипт или CRON. Это event для создания QUIZ в чатах.

Ведение вопросов

Все вопросы лежат в файле questions.txt.

Все вопросы в [q] могут быть записаны с отступами и обязательно следовать markdown.

Ответы в [a] должны быть в одну линию и не превышать 300 символов. См документацию

Описание создаваемых файлов (в игноре git)

  • question_counter.txt – счетчик заданных вопросов
  • sqlite.db – база данных
  • user_message_log.txt – записывание сообщений из приватных диалогов с пользователем
  • .env – настройка бота

Описание .env

  • BOT_TOKEN – токен бота, полученный от BotFather
  • BOT_INTERVAL_POLLING – polling бота с его interval
  • BOT_TIMEOUT_POLLING – polling бота с его timeout
  • BOT_MESSAGE_SEND_START_HELP – сообщение приветствия в диалоге пользователя
  • BOT_MESSAGE_SEND_START_HELP_INFO_LOG – сообщение о том, что диалоги с пользователем будут логироваться
  • BOT_MESSAGE_SEND_START_HELP_INFO_LOG_DONE – успешное сообщение залогированного сообщения пользователя в диалогах
  • BOT_MESSAGE_SEND_START_HELP_EMOJI – emoji приветствия в диалоге пользователя
  • BOT_MESSAGE_SEND_REGISTER_GROUP – сообщение при добавлении бота в чат
  • BOT_MESSAGE_SEND_REGISTER_GROUP_EMOJI – emoji при добавлении бота в чат
  • BOT_MESSAGE_SEARCH_TAG – хештег для поиска по чату
  • BOT_POLL_TITLE – заголовок в блоке вопроса
  • FILE_QUESTION_NAME – название файла для вопросов
  • FILE_QUESTION_MARK_HANDLER – метка вопросов
  • FILE_ANSWER_MARK_HANDLER – метка ответов
  • FILE_QUESTION_COUNTER_NAME – название файла для счетчика вопросов
  • FILE_USER_MESSAGE_LOG_NAME – название файла для записи сообщений пользователей с диалогов
  • SQLITE_FILE_NAME – название файла базы данных
  • SQLITE_TABLE_GROUP_NAME – название таблицы зарегистрированных чатов

tg-bot-quiz's People

Contributors

fromsi avatar

Watchers

 avatar  avatar

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.