~rd/delichon-bot

Discord bot that helps to organise online ChGK (ChGK - "What? Where? When?" game, popular in Russian-speaking countries and communities)

4e9b2bb Fix bugs in html and js

~rd pushed to ~rd/delichon-bot git

3 years ago

8362479 Key generation documented

~rd pushed to ~rd/delichon-bot git

3 years ago

#Delichon-bot

Discord bot that helps to organise online ChGK

ChGK - "What? Where? When?" game, popular in Russian-speaking countries and communities

The rest of README is in Russian. Maybe, someday I will translate it; creating a ticket for translation or sending me a patch would bring this day closer.

You can find a full manual for setting up this bot, Discord and OBS here

#Инструкция к боту

Delichon urbicum — городская ласточка

delichon-bot — бот-ласточка

После добавления бота на сервер можно начинать играть. Поскольку бот может быть подключен к различным серверам, до начала игры нужно указать ему, с каких столов в каких каналах собирать ответы. Каждый канал может быть либо каналом для ведущего, откуда происходит управление, либо каналом команды, поэтому после окончания игры необходимо указать боту, что игра завершилась.

#До начала игры

В канале ведущего нужно дать команду !new <количество вопросов> <Название турнира>, например, !new 36 Синхрон лайт 100500. В ответ бот выдаст команду, которую нужно ввести в каналах команд и две ссылки - одну для просмотра таблицы, а вторую для редактирования. Редактирование доступно только во время игры.

В каналах команд нужно ввести выданную команду, которая выглядит примерно так: !join iM6KdWrJkhNW. После этого бот будет собирать ответы из этого чата.

Для синхронизации между трансляцией и ботом можно настроить задержку для бота командой !config <delay>; например, !config 8 установит задержку в 8 секунд. Сообщения о вопросах и ответах будут отправляться в каналы команд через указанное время после того, как они были отправлены в канал ведущему. Задержку можно менять в любое время игры, по умолчанию она равна нулю. Действие задержки не распространяется на «экстренные» команды !msg <сообщение> и !reset <номер вопроса>, сообщения с ними отправляются командам в тот же момент, когда ведущий их вводит в своём канале.

#Вопросный раунд

В некоторых вариантах онлайн-ЧГК вопросы могут демонстрироваться на экране. Поскольку между чтением в трансляцию и приёмом этой трансляции есть некоторая задержка, имеет смысл использовать Discord для синхронизации.

Во время чтения ведущий может отправить текст вопроса в канал ведущего. Также можно при помощи кнопки «плюс» добавить изображение-раздаточный материал. Это сообщение отправится в каналы команд только после команды !q. Если произошла ошибка, до отправки сообщение можно заменить, отправив новое.

Команда !q отправляет текст Вопрос <номер> и сам вопросный материал (если он есть) в каналы команд и начинает отсчёт времени. За десять секунд до окончания минуты будет отправлено сообщение Осталось десять секунд, при окончании минуты — Время! Сдавайте ваши ответы, а после десяти секунд на ввод — Все ответы должны быть сданы. Для удобства эти сообщения дублируются и в канал ведущего.

Если вопрос является дуплетом или блицем, нужно использовать команду !q 20 или !q 30 — с указанием времени в секундах на вопрос. Тогда после окончания указанного времени в каналы придёт сообщение «Следующий мини-вопрос!» и можно будет аналогично отправить следующий мини-вопрос (последний мини-вопрос можно отправлять командой !q).

После окончания минуты ведущий отправляет в свой канал текст ответа. После получения сообщения о том, что все ответы должны быть сданы, он отправляет этот ответ всем командой !a. При этом ответ сохраняется в базе данных и отображается при редактировании таблицы.

#Сдача ответов

Команда получает текст в момент начала отсчёта минуты. Любой текст, который будет отправлен в чат после этого, бот-ласточка сочтёт ответом на вопрос (соберёт его и напишет об этом команде).

#После игры

Для того, чтобы завершить турнир, ведущему нужно ввести команду !close. После этого возможность редактирования таблицы закроется, а всем командам снова будет отправлена ссылка на таблицу для просмотра результатов.

#Если что-то пошло не так

Можно получить справку по доступным командам и текущем состоянии, введя команду !help. Бот, как правило, либо выдаёт какой-либо текст в ответ на сообщение, либо устанавливает реакцию «глаза», если обработал сообщение.

Ведущий может отправить сообщение всем командам при помощи команды !msg <текст сообщения>.

Командой !reset <вопрос> (например, !reset 14) ведущий может установить бота в состояние для начала чтения вопроса с соответствующим номером (если, к примеру, что-то пошло не так и засвечен ответ или ведущий запутался в командах).