HELPER Discord Bot
К списку Wiki
LEADERBOARD CORE // TOP-3 PNG // CACHE RENDER

HELPER LEADERBOARD ДОСКА ПОЧЁТА /LEADERBOARD / BALANCE / REPUTATION / PIL RENDER / STYLE PRESETS

Leaderboard превращает обычный список очков в premium-картинку TOP-3. Игрок вызывает команду, выбирает категорию баланс или репутация, а HELPER собирает данные текущего сервера, подтягивает аватарки, применяет стиль, баннер и отправляет готовую PNG-доску прямо в Discord.

TOP-3лучшие игроки
1100×680PNG render
90scache ttl
4glass/neon/minimal/golden
Datashop.db и reputation.db
RenderPillow рисует PNG 1100×680
Stylesglass / neon / minimal / golden
Cachehash + disk cache + memory cache
Safetyguild_id изолирует серверы

Что делает Leaderboard

Это визуальная доска почёта сервера. Вместо длинной таблицы бот отдаёт красивую PNG-карточку TOP-3: место, ник, аватарка, очки, стиль и фон. Категории ограничены балансом и репутацией, а данные читаются строго по текущему guild_id.

01

Игрок вызывает команду

Выбирает категорию и стиль или использует стиль по умолчанию.

02

Бот читает базу

Баланс берётся из экономики, репутация — из системы кармы.

03

Рисуется PNG

Pillow применяет баннер, glow, карточки игроков и аватарки.

04

Discord получает embed

Файл прикрепляется как attachment и показывается внутри embed.

Больше информации картинками

Показываем полный сценарий: slash-команда, выбор категории, генерация доски, пустое состояние, настройка стиля, очистка кэша и disabled-state.

01 / commandИгрок вызывает рейтинг
💬
slash command/leaderboard

Параметры команды

category: 💰 balance / 🎭 reputation
style: auto / glass / neon / minimal / golden
создать визуальный TOP-3
02 / discord resultГотовая доска
🏆
attachment pngleaderboard_*.png

🏆 ТОП ПО БАЛАНСУ

Embed содержит только attachment-картинку, а вся красота находится внутри PNG.

PODIUM / AVATARS / SCORE
attachment://leaderboard_123_balance_hash.png
03 / top usersTOP-3 карточки
balanceguild onlytop 3
🥇 Sasi12 980 COINS
#1
🥈 Akira8 440 COINS
#2
🥉 Neo7 120 COINS
#3
04 / empty stateЕсли данных нет

🏆 ДОСКА ПОЧЁТА ПУСТА

Для баланса нужно выдать игрокам деньги/баллы в магазине. Для репутации — использовать систему кармы.

NO DATA FOR THIS GUILD
05 / settingsНастройка стиля

✅ Стиль обновлён

Администратор меняет default_style через команду или Dashboard, а кэш сервера очищается.

glass
neon
minimal
06 / cache clearОчистка кэша

🧹 Кэш очищен

Если сменился баннер, стиль или данные, можно принудительно очистить кэш текущего сервера.

/leaderboard_clear_cache

Команды Discord

Команды разделены на пользовательскую генерацию рейтинга и админское управление стилем/кэшем.

main command/leaderboard
/leaderboard category:balance style:auto

Показывает TOP-3 по балансу или репутации. Если style = auto, берётся default_style из настроек сервера.

alias idea/top
/top category:reputation style:golden

В старой Wiki этот путь описывался как /top. В текущем cog главным именем стоит leaderboard; если у тебя есть alias /top — текст уже подходит и под него.

admin command/leaderboard_settings
/leaderboard_settings default_style:Glass

Администратор выбирает стиль по умолчанию: Glass, Neon, Minimal или Golden.

admin command/leaderboard_clear_cache
/leaderboard_clear_cache

Очищает memory/disk cache текущего сервера, чтобы следующая генерация точно пересобрала картинку.

Путь рейтинга от команды до PNG

1Command

/leaderboard

2Access

roles/module

3DB

shop/rep

4Assets

avatars/banner

5Render

Pillow PNG

6Cache

hash file

A

Role access

Если access_role_ids пустой — команда открыта всем. Если роли заданы — нужен доступ.

B

Render semaphore

Одновременно рисуется максимум две картинки, чтобы не перегрузить CPU.

C

Banner event

При обновлении баннера leaderboard/top кэш сервера очищается автоматически.

Что видит игрок

public commandЗапрос рейтинга

Хочу посмотреть топ

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

category → balance / reputation
cooldownЗащита от спама

⏳ Подождите

У команды есть cooldown, чтобы игроки не спамили генерацию PNG.

180 sec / user
no accessЕсли нет роли

❌ Нет доступа

Если на сайте заданы access_role_ids, обычный участник без роли не сможет вызвать рейтинг.

ROLE REQUIRED
empty dataЕсли рейтинг пустой

Пока нет данных

Бот объясняет, что нужно выдать баланс или начать использовать карму.

empty_embed(category)

Что делает администратор

01

Выбирает стиль

Glass, Neon, Minimal или Golden через команду или Dashboard.

02

Настраивает тексты

Отдельные заголовки, subtitle и score-label для баланса и репутации.

03

Задаёт фон

custom_banner или общий Visual Core key leaderboard/top.

04

Очищает кэш

После правок можно руками пересобрать визуал без ожидания TTL.

Настройка на сайте

Сайт хранит настройки в data/leaderboard_settings.json. После сохранения ставится deploy_requested, site_sync_loop сбрасывает кэш и отмечает last_deploy_at.

main settingsОсновные поля
default_styleglass, neon, minimal или golden.
title_balanceзаголовок картинки для топа баланса.
subtitle_balanceподпись под заголовком баланса.
score_label_balanceCOINS, CASH, ₽, PTS или другое обозначение.
title_reputationзаголовок картинки для репутации.
score_label_reputationREP, KARMA, TRUST или другое обозначение.
access / bannerДоступ и визуал
custom_bannerфон PNG-картинки, если задан на сайте.
custom_footerfooter Discord embed под картинкой.
access_role_idsроли, которым разрешено использовать рейтинг.
deploy_requestedзапрос сайта на очистку кэша и синхронизацию.
deploy_attemptsзащита от бесконечных попыток deploy.
json previewleaderboard_settings.json
data/leaderboard_settings.json
{ "123456789": { "default_style": "glass", "title_balance": "ДОСКА ПОЧЁТА", "subtitle_balance": "TOP-3 ПО БАЛАНСУ СЕРВЕРА", "score_label_balance": "COINS", "title_reputation": "ТОП РЕПУТАЦИИ", "score_label_reputation": "REP", "custom_banner": "https://cdn.server/top-bg.png", "access_role_ids": ["111", "222"], "deploy_requested": true } }
banner priorityОткуда берётся фон
custom_bannerпервый приоритет из настроек Leaderboard.
banners_settings.jsonобщий Visual Core через ключи leaderboard/top.
backgrounds/локальный случайный фон, если banner не задан.
style bgfallback — цветовая схема renderer.

Откуда берутся очки

Модуль сам ищет подходящую таблицу и score-колонку, чтобы работать с разными версиями экономики и репутации.

balanceБаланс
shop.dbосновная база экономики.
tablesusers, shop_users, economy_users, balances.
score columnsbalance, money, cash, coins, points, score, total.
guild filterWHERE guild_id = текущий сервер.
reputationРепутация
reputation.dbосновная база кармы.
tablesserver_reputation, reputation, users, user_reputation, reputation_users.
score columnspoints, reputation, rep, karma, score, total, xp, value.
limitсортировка по score DESC и TOP-3.

Почему быстро работает

1State

users/style/banner

2Hash

md5 digest

3Memory

mem_cache

4Disk

cache png

5Render

if miss

6Cleanup

old files

cache keyЧто входит в hash
guild_id/categoryразные серверы и категории не смешиваются.
style/title/subtitleсмена оформления создаёт новый hash.
score_label/bannerфон и подпись влияют на cache.
users/avatar_digestсмена состава, очков или аватарок обновляет картинку.
cache foldersГде лежит PNG
data/cache/leaderboard
top_123456789_balance_a1b2c3d4e5f6.png top_123456789_reputation_d0c9b8a7e6f5.png cache_key: guild_id:category:style:leaderboard_hash

Если модуль выключен

Отключение через module_states.json блокирует новые запросы рейтинга, но не удаляет настройки и cache-файлы вручную.

disabled embedЧто видит пользователь
🔌
safe stateLeaderboard отключён

🔌 МОДУЛЬ ДОСКИ ПОЧЁТА ОТКЛЮЧЁН

Новые рейтинги сейчас не генерируются. Включите leaderboard на сайте, чтобы команда снова работала.

🔌 ДОСКА ПОЧЁТА ОБЕСТОЧЕНА
state keysКлючи состояния
leaderboardосновной ключ модуля.
leadersстарый alias для совместимости.
top / boardдополнительные alias в текущем module aliases.
доска_почетарусский alias для старых настроек.

Карта технической логики

filesФайлы и данные
SETTINGS_FILE

data/leaderboard_settings.json — стиль, тексты, роли, баннер и deploy.

SHOP_DB

data/shop.db — источник баланса.

REP_DB

data/reputation.db — источник репутации.

CACHE_DIR

data/cache/leaderboard — готовые PNG-файлы.

BANNERS_FILE

data/banners_settings.json — общий Visual Core фон.

constantsГлавные лимиты
🏆
MAX_TOP_USERS3 игрока
CACHE_TTL90 секунд
🧊
COOLDOWN180 секунд
🎨
STYLES4 режима
📊
CATEGORIES2 категории
🔁
DEPLOY5 попыток
rendererКак рисуется PNG
LeaderboardRendererPillow-рендер 1100×680.
load_banner_backgroundиспользует custom banner как фон.
load_local_backgroundберёт случайный фон из backgrounds/.
draw_cardрисует карточки мест #1, #2, #3.
avatar_imageкруглые аватарки участников.
commandsЛогика cog
build_top_usersчитает пользователей и аватарки.
make_leaderboard_fileсоздаёт или берёт из cache PNG.
site_sync_loopсбрасывает cache при deploy_requested.
on_banner_updatedчистит cache при изменении leaderboard/top баннера.
clear_guild_cacheудаляет memory и disk cache сервера.

Ошибки и решения

Почему доска пустая?

В базе нет данных по выбранной категории. Для баланса нужны записи экономики, для репутации — записи кармы.

Почему команда говорит подождать?

У пользователя есть cooldown, чтобы не спамить генерацию PNG и не нагружать сервер.

Почему стиль не изменился?

Очистите кэш через /leaderboard_clear_cache или дождитесь сброса после deploy_requested.

Почему фон не отображается?

Проверьте, что custom_banner — публичная http/https ссылка, а размер файла доступен для скачивания ботом.

Почему игрок не видит команду?

Проверьте module_states, access_role_ids и права пользователя. Администраторы проходят доступ автоматически.

Какие стили доступны?

Glass, Neon, Minimal и Golden. Все остальные значения нормализуются к glass.

// WIKI_NAVIGATION

Вернуться к списку Wiki

Ты дошёл до конца страницы Leaderboard. Можно вернуться в общий центр документации, открыть Dashboard или подняться наверх к началу этой страницы.