Skip to content
This repository was archived by the owner on Sep 13, 2022. It is now read-only.

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Бот для игры Что? Где? Когда? в вашем telegram чате/канале.

License

MIT

Данный бот использует базу вопросов ЧГК, ознакомьтесь с лицензией на использование (вы также можете использовать собственный сервис с аналогичным форматом xml):

https://db.chgk.info/copyright

Зависимости

https, http, url, os, redux, lodash, fs, xml2js, zlib, cryptojs, nodemailer

Настройка

Настройки конфигурации задаются в файле chgk-tg-bot.conf (по умолчанию, либо аналогичном наименованию скрипта). Файл конфигурации представляет из себя json-объект формата:

{
	"chgk-url": "https://db.chgk.info/xml/random/types12/complexity3/876490191/limit100",
	"email-host": "email.sergdudko.tk",
	"email-port":25,
	"email-email":"0000000000@sergdudko.tk",
	"email-pswd":"0000000000",
	"email-to":"sergei.dudko@farmin.by",
	"cert-crt":"/etc/****/cert.pem",
	"cert-ca":"/etc/****/ca.pem",
	"cert-key":"/etc/****/key.pem",
    "wh-port":8443,
    "wh-url":"https://iocom.sergdudko.tk",
    "bot-key":"68*********************************************************Rlw",
    "adm-id":236255988
}

, где:

  • chgk-url - ссылка на пакет (случайный) в базе вопросов ЧГК, не забудьте после адреса добавить /xml/
  • email-host - адрес SMTP-сервера для отправки ошибок
  • email-port - порт SMTP-сервера для отправки ошибок
  • email-email - имя пользователя для авторизации в SMTP-сервере
  • email-pswd - пароль пользователя для авторизации в SMTP-сервере
  • email-to - электронная почта куда отправлять ошибки
  • cert-crt - путь к ssl-сертификату сервера
  • cert-ca - путь к ssl-сертификату центра сертификации
  • cert-key - путь к ключу ssl-сертификата сервера
  • wh-port - порт веб-хука телеграм 443, 80, 88 или 8443
  • wh-url - адрес вашего сервера (такой же как в сертификате)
  • bot-key - ключ API полученный от @BotFather
  • adm-id - id-администратора (в данной версии уже не используется)

У приложения должны быть права записи на файл chgk-tg-bot.db (по умолчанию, либо аналогичном наименованию скрипта). Это база данных приложения, которая дублирует redux-хранилище и загружается в него при запуске бота. Создается автоматически (можно удалить).

Логика работы

  • Бот общается с пользователем напрямую, либо подключается к каналу.
  • Если в пользователь/в канале нет сообщений - через полчаса, бот перестает писать туда (диалог становится не активным).
  • Бот накапливает в собственную базу 1000 вопросов (по средствам обмена) с базой ЧГК, затем выбирает случайный вопрос и считает его актуальным (удалив из общего стека).
  • Раз в 10 секунд и при старте бот проверяет, если стек меньше 1000, бот автоматически доберет вопросы из базы ЧГК. (например, если в ссылке задана выборка в 100, то при 999 вопросах доберет до 1099)
  • Для верного ответа на актуальный вопрос бот собирает хэши каждого слова (регистр приводится к единому, знаки пунктуации удаляются), содержимое комментария (то что в скобках) опускается из хэшей.
  • Бот мониторит все диалоги во всех активных чатах/группах на факт верных ответов. Для каждого сообщения собираются хэши слов, приведенных к единому регистру, знаки пунктуации удаляются. Если данные хэши входят в 80% хэшей верного ответа - вопрос считается отвеченным.
  • Если пользователь ответил верно, во все активные диалоги шлется сообщение, что такой-то пользователь ответил верно и верный ответ такой-то. Вопрос удаляется.
  • Если пользователь ответил неверно, но есть совпадения по хэшам, то в диалог с этим пользователем/группой пишется ответ на сообщение пользователя с процентом совпадения.
  • Если совпадений нет - бот ничего не пишет (чтобы не мешать обсуждать вопросы в группе).
  • Раз в 10 секунд и при старте, бот проверяет что актуальный вопрос существует, если нет - выбирает его и удаляет из общего стека.
  • Если актуальный вопрос не отвечен за 10 минут, бот сбрасывает его, разослав в активные диалоги ответ.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages