🤖 Discord-бот
Tribescore поставляется с сопутствующим Discord-ботом, который переносит соревнование вашего сервера в Discord — живая, автоматически обновляемая таблица лидеров, слэш-команды для поиска любого племени и автоматическая система выявления злоупотреблений, отмечающая подозрительное начисление очков.
Бот подключается напрямую к той же базе данных MySQL/MariaDB, что использует плагин. Он только читает таблицы очков плагина — он никогда не изменяет ваши очки — поэтому его безопасно запускать рядом с работающим сервером.
Возможности
- Живая таблица лидеров — публикует и автоматически обновляет топ племён в выбранном вами канале, со стрелками движения ▲/▼ между периодами подсчёта.
- Отрисовка изображением или встраиванием (embed) — показывайте таблицу как
классический embed Discord или как отполированный PNG, отрисованный по одному из
семи встроенных дизайнов (
podium,spotlight,cards,bars,terminal,ark,dark). Шаблоны — это обычный HTML, который вы можете перестилизовать и оформить под свой сервер. - Слэш-команды —
/tribepointsи/getrankпозволяют игрокам посмотреть очки и ранг любого племени. Названия команд и сообщения настраиваются. - Выявление злоупотреблений — три независимых детектора публикуют оповещения, когда начисление очков выглядит подозрительно, каждое с кнопкой «Игнорировать это оповещение» для подавления ложных срабатываний.
- Автономный исполняемый файл — распространяется как единый самодостаточный
Windows
.exe. Не требуется ни браузер, ни дополнительные установки, даже для отрисовки изображений.
Требования
- Установленный плагин Tribescore, записывающий данные в базу данных MySQL/MariaDB (см. Конфигурацию и Общую конфигурацию).
- Приложение Discord и токен бота, созданные в Discord Developer Portal.
- Windows-машина для запуска бота — он может работать где угодно, откуда доступна база данных.
Установка
- Скачайте бота из вашей панели управления Bytemart и распакуйте его.
- Откройте
config.ymlи настройте его (см. ниже). - Задайте токен вашего бота и пароль базы данных — либо напрямую в
config.yml, либо через переменные окруженияLEADERBOARD_BOT_TOKENиMYSQL_PASSWORD(рекомендуется, чтобы секреты не хранились в файле конфигурации). - Пригласите бота на ваш сервер, дав ему разрешение отправлять сообщения, встраивания (embeds) и вложения в каналы таблицы лидеров и оповещений.
- Запустите исполняемый файл. При первом запуске он регистрирует свои слэш-команды и публикует таблицу лидеров.
💡 Если вы переименуете слэш-команду в
config.yml, Discord может потребовать, чтобы бот был исключён и заново приглашён, прежде чем изменение вступит в силу.
Конфигурация (config.yml)
Бот настраивается полностью через config.yml. Ключевые настройки:
| Настройка | Описание |
|---|---|
bot-token |
Токен вашего Discord-бота. Оставьте пустым и задайте вместо него LEADERBOARD_BOT_TOKEN. |
period-start |
Cron-выражение для момента начала нового периода подсчёта (тогда таблица делает снимок движения). См. crontab.guru. |
timezone |
Часовой пояс для планирования и сравнения транзакций — должен совпадать с часовым поясом вашей базы данных. |
refresh-cooldown |
Секунды между обновлениями таблицы лидеров внутри периода. |
leaderboard-channel |
ID канала, в котором публикуется таблица лидеров. |
keep-leaderboard-history |
Когда true, публикует новое сообщение с таблицей лидеров каждый период вместо редактирования существующего. |
leaderboard-render-mode |
embed (встраивание Discord) или image (отрисованный PNG). |
leaderboard-image |
Опции режима изображения: template, title, lines, width, scale. |
mysql |
Подключение к базе данных: host, port, user, password, database, leaderboard-table, transactions-table, timezone. |
commands |
Названия команд, описания и ответные сообщения. |
abuse-detection |
Включение и настройка модулей выявления злоупотреблений. |
⚠️
leaderboard-tableиtransactions-tableдолжны совпадать с таблицами плагина — по умолчаниюts_leaderboardиts_transactions. Бот читает эти таблицы и никогда не пишет в них.
Отображение таблицы лидеров
Выберите способ отрисовки таблицы с помощью leaderboard-render-mode:
В режиме embed таблица — это текстовое встраивание, построенное из
leaderboard_embed.json. В режиме image она отрисовывается из HTML-шаблона в
templates/leaderboard/<name>/. Если отрисовка изображения когда-либо даст сбой,
бот автоматически переключается на embed, поэтому таблица лидеров никогда не может
уйти в офлайн.
Слэш-команды
| Команда (по умолчанию) | Описание |
|---|---|
/tribepoints <tribe> |
Показать текущие очки племени. |
/getrank <tribe> |
Показать ранг и очки племени. |
И названия команд, и их ответные сообщения настраиваются в разделе commands в
config.yml, с использованием плейсхолдеров {tribe}, {points} и {rank}.
Выявление злоупотреблений
Когда abuse-detection.enabled установлено в true, бот периодически сканирует
топ племён и публикует оповещение в настроенный channel-id, когда срабатывает
модуль. Каждое оповещение несёт кнопку «Игнорировать это оповещение», которая
подавляет будущие повторы для этой пары племён.
| Модуль | Что выявляет |
|---|---|
rapid-increase |
Племя, набирающее необычно большое количество очков в течение одного периода подсчёта. |
massive-transaction |
Единичный перенос очков выше порога от одного племени к другому. |
prefered-source |
Племя, получающее большую долю своих очков от одного-единственного племени-источника (с опциональной проверкой взаимности — «зеркала»). |
Каждый модуль имеет собственный cooldown, пороги и title / message оповещения
— доступные плейсхолдеры описаны прямо в config.yml.
ℹ️ Бот создаёт одну собственную таблицу,
ts_ignored_alerts, чтобы помнить, какие оповещения вы отклонили. Это единственная таблица, в которую он пишет; ваши данные об очках никогда не изменяются.