Все модули

Экзамен по правилам

Кнопка «Я прочитал правила» не значит ничего: её жмут, не открывая текст, а потом администрация разбирает одни и те же нарушения от людей, которые «всё приняли». Этот модуль меняет условие: доступ открывается за сданный тест. Вы описываете банк вопросов, бот берёт из него случайные, перемешивает и вопросы, и варианты ответа, и задаёт их по одному — так, что видит их только сдающий. За проходной балл бот сам выдаёт роль доступа и снимает роль новичка, а неудачную попытку записывает и говорит человеку, когда можно пересдать. Начатая попытка живёт в базе, а не в памяти процесса: ночной перезапуск бота не сбросит человека на первый вопрос, а истёкшее время закроет попытку само. Со временем набирается главное — отчёт о том, на каких вопросах люди спотыкаются чаще всего; обычно это не про невнимательность, а про непонятно написанное правило.

Кому подходит

Серверам, где правила длинные и их всё равно никто не читает до первого бана
Игровым проектам с закрытым входом: роль доступа выдаёт бот, а не дежурный администратор
Тем, кто правит правила и хочет одной командой отправить всех сдавать заново

Как это работает

Весь путь целиком, шаг за шагом. Справа — то, что реально увидят на вашем сервере.

  1. 1

    Банк вопросов

    Вопросы задаются в личном кабинете отдельными строками: сам вопрос, варианты ответа через точку с запятой и номер верного. Вариантов у вопроса от двух до пяти — ровно столько кнопок Discord кладёт в один ряд. Всего можно завести до 50 вопросов, и банк стоит держать заметно больше, чем берётся в одну попытку: тогда пересказать соседу «первый, третий, второй» бесполезно. Строку, которую бот разобрать не смог, он не выбрасывает молча — недочёты банка перечисляются в отчёте и в проверке перед публикацией панели, с указанием, что именно поправить.

  2. 2

    Панель в канале с правилами

    Панель публикуется командой в тот канал, где команду дали. Перед публикацией бот проверяет всё, от чего зависит экзамен: есть ли вопросы, на месте ли роль за сдачу, стоит ли роль бота выше неё, доступен ли канал журнала. Если что-то не так, вместо панели приходит список недочётов — панель, которая приводит к невыдаваемой роли, хуже, чем её отсутствие.

    правила
    B
    Ваш ботБОТ
    Экзамен по правилам
    Доступ к серверу открывается после короткого теста по правилам. Вопросы задаются по одному, у каждого верен ровно один вариант. Вопросы и ответы видите только вы — соседям по каналу они не показываются. Перед началом перечитайте правила: вернуться к предыдущему вопросу нельзя.
    Сдать экзамен
  3. 3

    Вопросы приходят по одному и видны только сдающему

    Весь экзамен идёт в сообщениях, которые видит один человек. Из банка берутся случайные вопросы, порядок вопросов и порядок вариантов внутри вопроса перемешиваются, а выданный набор запоминается вместе с попыткой — правку банка посреди экзамена человек не заметит и дойдёт до конца на том, что ему выдали. Ответ засчитывается сразу и повторное нажатие той же кнопки уже ничего не меняет: строка захватывается атомарно, по номеру текущего вопроса.

    B
    Ваш ботБОТ
    видит только тот, кто нажал
    Этот вопрос уже позади — сейчас идёт вопрос 4 из 10. Нажмите «Сдать экзамен» на панели, и я покажу его свежим сообщением.
    Вопрос 3 из 10
    Куда писать жалобу на игрока? 1. В общий чат 2. В личные администратору 3. В тикет
    В общий чатВ личные администраторуВ тикет
  4. 4

    Время идёт в базе, а не в памяти бота

    Срок попытки записывается в базу при первом вопросе, и все сравнения со «сейчас» делает тоже база — процесс бота живёт по UTC, база по Москве, и подсчёт в JavaScript ошибался бы на три часа. Поэтому ночной перезапуск не срывает экзамен: человек возвращается той же кнопкой на панели и продолжает с того вопроса, на котором остановился. Брошенные и просроченные попытки раз в минуту закрывает планировщик — время вышло, попытка засчитана как проваленная.

  5. 5

    Итог, роль и запись в журнал

    После последнего вопроса человек видит, сколько ответил верно, сдал он или нет и когда можно пересдать. Сдавшему бот выдаёт роль доступа и снимает роль новичка — но только если ему это позволено: роль выше собственной Discord выдать не даст, и тогда бот честно скажет об этом и человеку, и в журнал, а сдачу всё равно зачтёт. Разбор ошибок показывается, только если владелец включил его отдельно: иначе правильные ответы за неделю разойдутся по друзьям. В канал журнала уходит запись: кто сдавал, с каким результатом и сколько времени занял.

    журнал-экзамена
    B
    Ваш ботБОТ
    Экзамен сдан
    @Новичок Результат: 9 из 10 (90%) Проходной балл: 80% Заняло времени: 6 мин 12 сек Попытка участника: по счёту 2
  6. 6

    Переаттестация и отчёт «что написано непонятно»

    Когда правила изменились, одна команда снимает сдачу — всем сразу или одному участнику. Роль доступа снимается, роль новичка возвращается, а в личные сообщения уходит объяснение, почему придётся сдавать заново. Массовая рассылка идёт пачками с паузой и обрабатывает людей по одному: если её прервать, повтор команды продолжит с того места, где она остановилась. Отдельно копится статистика по вопросам — отчёт показывает те, на которых спотыкаются чаще всего, и это почти всегда сигнал переписать само правило, а не ужесточать экзамен.

    B
    Ваш ботБОТ
    Экзамен по правилам: итоги
    Сдавали: 214 чел. · сдали: 187 · пока не сдали: 27 Всего попыток: 341 · средний лучший результат: 86% Прямо сейчас экзамен пишут: 3 Чаще всего отвечают неверно: 78% ошибок — Со скольки часов действует ночной режим? · 42 из 54

Что вы настраиваете

Всё это меняется в личном кабинете в любой момент — каналы и роли выбираются списками с вашего сервера, вводить ID руками не нужно. Бот подхватывает изменения сам.

Банк вопросов

  • Банк вопросов

Правила экзамена

  • Сколько вопросов в одной попытке
  • Проходной балл, процентов
  • Сколько минут даётся на попытку
  • Сколько попыток даётся всего
  • Пауза до пересдачи, часов
  • Показывать разбор ошибок после попытки

Роли

  • Роль за сданный экзамен
  • Роль, которую снять после сдачи
  • Роли, управляющие экзаменом

Тексты результата

  • Что бот пишет сдавшему
  • Что бот пишет не сдавшему
  • Что бот пишет, когда вышло время
  • Текст уведомления о переаттестации

Панель

  • Заголовок панели
  • Текст панели
  • Подпись внизу панели
  • Надпись на кнопке
  • Цвет кнопки
  • Подпись под каждым вопросом

Оформление и журнал

  • Цвет полосы сообщений
  • Цвет сообщения о сдаче
  • Цвет сообщения о провале
  • Канал журнала экзаменов

Команды в Discord

Что вводят на сервере, когда модуль подключён. Команды набираются со слэша — Discord подсказывает список сам, наизусть помнить ничего не нужно.

/экзамен-панель опубликовать сразу

Публикует в этом канале панель с кнопкой «Сдать экзамен», предварительно проверив настройки и права бота.

Где
в канале, где должна висеть панель — обычно рядом с правилами
Кто
управляющие сервером и роли из настройки «Роли, управляющие экзаменом»
/экзамен-итоги

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

Где
в любом канале, ответ увидите только вы
Кто
управляющие сервером и роли из настройки «Роли, управляющие экзаменом»
/экзамен-сброс

Назначает переаттестацию: снимает сдачу и роль доступа, возвращает роль новичка и пишет человеку в личные, что правила изменились.

  • участник — назначить пересдачу одному человеку; его идущая попытка закрывается сразу
  • подтверждение — чтобы сбросить всем, надо вписать слово СБРОСИТЬ заглавными буквами
Где
в любом канале, ответ увидите только вы
Кто
управляющие сервером и роли из настройки «Роли, управляющие экзаменом»
/экзамен-статус

Показывает участнику его состояние: сдан ли экзамен и когда, сколько попыток осталось и когда можно пересдать.

Где
в любом канале, ответ видит только нажавший
Кто
любой участник сервера

Команды для администрации Discord показывает только тем, у кого есть нужное право сервера. Чтобы ими пользовалась ваша модерация без прав администратора, откройте доступ её ролям: Настройки сервера → Интеграции → ваш бот → нужная команда.

Готовы попробовать?

Бот разворачивается за пару минут: выбираете модули, вставляете токен, приглашаете на сервер.

Собрать бота