Все модули

Сезон, задания и лавка

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

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

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

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

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

  1. 1

    Отметился — получил баллы

    Команда «отметиться» доступна всем и отвечает только тому, кто её дал. День считается по часовому поясу из настроек, а не по времени сервера базы: иначе у половины участников новый день наступал бы в три часа ночи. Отметка за сутки засчитывается ровно одна — день захватывается запросом с проверкой, поэтому два быстрых нажатия не начислят баллы дважды. Пропустил день — серия обнуляется и начинается заново.

    B
    Ваш ботБОТ
    Отметка засчитана
    Начислено: 10 баллов · награда за серию: 50 баллов Серия: 7 дней подряд · Баланс: 190 баллов Роль за серию: Завсегдатай
  2. 2

    Задания считаются сами

    Задание — это строка в настройках: название, что считаем, сколько нужно, сколько баллов и период (день или неделя). Считать бот умеет три вещи и обещает только их: сообщения в чате, минуты в голосовом и ежедневную отметку. Сообщения считаются с выдержкой, чтобы двадцать «ага» подряд не закрыли задание за минуту, а выдержка живёт в базе — перезапуск бота её не сбрасывает. Минуты в голосовом идут, только когда в канале есть собеседник и звук не отключён, иначе задание закрывалось бы сном в пустом канале.

  3. 3

    Награда за задание достаётся один раз

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

    B
    Ваш ботБОТ
    Задание выполнено
    «Поболтать» — 20 баллов
  4. 4

    Карточка «мои задания»

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

    B
    Ваш ботБОТ
    Мои задания
    Баланс: 190 баллов · За сезон заработано: 340 баллов · Место в сезоне: 4 · Серия: 7 дней Ежедневная отметка на сегодня уже сделана. Поболтать на сегодня — выполнено, 20 баллов Посидеть в голосовом на неделю — 18/30 · 25 баллов
  5. 5

    Лавка: баллы уходят на награду

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

    B
    Ваш ботБОТ
    видит только тот, кто нажал
    Готово, роль выдана на 30 дней. Списано 300 баллов. По истечении срока бот снимет её сам.
    Подтвердите покупку
    Награда: Цветной ник — роль «Радуга» на 30 дней Цена: 300 баллов · Ваш баланс: 340 баллов · Останется: 40 баллов
    КупитьОтмена
  6. 6

    Заявка администрации и итоги сезона

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

    заявки-на-выдачу
    B
    Ваш ботБОТ
    видит только тот, кто нажал
    Отмечено, участнику сообщили.
    Заявка на выдачу награды
    Участник: @Игрок · Награда: Игровой набор «Новичок» · Списано: 500 баллов Что сделать: выдать набор «Новичок» на игровом сервере Нажмите «Выдал», когда награда действительно выдана. Бот сам ничего не выдаёт.
    ВыдалОтказать и вернуть баллы

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

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

Основа сезона

  • Как называются баллы
  • Длительность сезона, дней
  • Часовой пояс сервера
  • С какого дня начинается неделя

Как заработать баллы

  • Баллов за ежедневную отметку
  • Не считать сообщения чаще, чем раз в, секунд
  • Сколько человек в голосовом нужно для зачёта минут
  • Каналы, которые не идут в зачёт

Серии (стрик)

  • Первая награда за серию — через сколько дней подряд
  • Баллов за первую веху серии
  • Роль за первую веху серии
  • Вторая награда за серию — через сколько дней подряд
  • Баллов за вторую веху серии
  • Роль за вторую веху серии

Задания и лавка

  • Задания
  • Сообщать о выполненном задании в личные
  • Лавка наград

Заявки на выдачу

  • Канал заявок на выдачу
  • Кто отмечает выдачу заявок
  • Сколько заявок на выдачу можно держать в очереди

Объявления и оформление

  • Канал объявлений сезона
  • Сколько мест показывать в объявлении итогов
  • Цвет карточек

Команды в Discord

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

/отметиться

Ежедневная отметка: начисляет баллы и ведёт серию дней подряд.

Где
в любом канале сервера, ответ увидит только сам участник
Кто
все участники
/задания

Личная карточка: что осталось сделать сегодня и за неделю, сколько баллов на счету и какое место в сезоне.

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

Список наград с ценами и покупка за баллы через меню и подтверждение.

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

Таблица сезона по заработанным баллам, страницами по десять человек.

Где
в том канале, где таблица должна остаться висеть
Кто
все участники
/сезон-сброс

Подводит итоги сезона и начинает новый с нуля; требует вписать слово СБРОСИТЬ.

Где
в любом канале, ответ увидит только владелец
Кто
управляющие сервером
/сезон-проверка проверка настроек

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

Где
в любом канале, ответ увидит только владелец
Кто
управляющие сервером

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

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

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

Собрать бота