HELPER LEADERBOARD ДОСКА ПОЧЁТА /LEADERBOARD / BALANCE / REPUTATION / PIL RENDER / STYLE PRESETS
Leaderboard превращает обычный список очков в premium-картинку TOP-3. Игрок вызывает команду, выбирает категорию баланс или репутация, а HELPER собирает данные текущего сервера, подтягивает аватарки, применяет стиль, баннер и отправляет готовую PNG-доску прямо в Discord.
Что делает Leaderboard
Это визуальная доска почёта сервера. Вместо длинной таблицы бот отдаёт красивую PNG-карточку TOP-3: место, ник, аватарка, очки, стиль и фон. Категории ограничены балансом и репутацией, а данные читаются строго по текущему guild_id.
Игрок вызывает команду
Выбирает категорию и стиль или использует стиль по умолчанию.
Бот читает базу
Баланс берётся из экономики, репутация — из системы кармы.
Рисуется PNG
Pillow применяет баннер, glow, карточки игроков и аватарки.
Discord получает embed
Файл прикрепляется как attachment и показывается внутри embed.
Больше информации картинками
Показываем полный сценарий: slash-команда, выбор категории, генерация доски, пустое состояние, настройка стиля, очистка кэша и disabled-state.
Команды Discord
Команды разделены на пользовательскую генерацию рейтинга и админское управление стилем/кэшем.
/leaderboard category:balance style:autoПоказывает TOP-3 по балансу или репутации. Если style = auto, берётся default_style из настроек сервера.
/top category:reputation style:goldenВ старой Wiki этот путь описывался как /top. В текущем cog главным именем стоит leaderboard; если у тебя есть alias /top — текст уже подходит и под него.
/leaderboard_settings default_style:GlassАдминистратор выбирает стиль по умолчанию: Glass, Neon, Minimal или Golden.
/leaderboard_clear_cacheОчищает memory/disk cache текущего сервера, чтобы следующая генерация точно пересобрала картинку.
Путь рейтинга от команды до PNG
/leaderboard
roles/module
shop/rep
avatars/banner
Pillow PNG
hash file
Role access
Если access_role_ids пустой — команда открыта всем. Если роли заданы — нужен доступ.
Render semaphore
Одновременно рисуется максимум две картинки, чтобы не перегрузить CPU.
Banner event
При обновлении баннера leaderboard/top кэш сервера очищается автоматически.
Что видит игрок
Что делает администратор
Выбирает стиль
Glass, Neon, Minimal или Golden через команду или Dashboard.
Настраивает тексты
Отдельные заголовки, subtitle и score-label для баланса и репутации.
Задаёт фон
custom_banner или общий Visual Core key leaderboard/top.
Очищает кэш
После правок можно руками пересобрать визуал без ожидания TTL.
Четыре визуальных стиля
Стили встроены в renderer и меняют цветовую схему, glow, фон, частицы и общий mood картинки.
Glass
Мягкий dark-glass с cyan/purple glow. Универсальный premium-стиль для большинства серверов.
Neon
Яркий cyberpunk-визуал с magenta/cyan. Хорошо подходит для RP, GTA, anime и e-sport.
Minimal
Строгая чистая карточка без лишних частиц. Подходит для серьёзных community.
Golden
Золотой победный стиль для топа донатеров, сезона, экономики или VIP-лидера.
Настройка на сайте
Сайт хранит настройки в data/leaderboard_settings.json. После сохранения ставится deploy_requested, site_sync_loop сбрасывает кэш и отмечает last_deploy_at.
default_styleglass, neon, minimal или golden.title_balanceзаголовок картинки для топа баланса.subtitle_balanceподпись под заголовком баланса.score_label_balanceCOINS, CASH, ₽, PTS или другое обозначение.title_reputationзаголовок картинки для репутации.score_label_reputationREP, KARMA, TRUST или другое обозначение.custom_bannerфон PNG-картинки, если задан на сайте.custom_footerfooter Discord embed под картинкой.access_role_idsроли, которым разрешено использовать рейтинг.deploy_requestedзапрос сайта на очистку кэша и синхронизацию.deploy_attemptsзащита от бесконечных попыток deploy.custom_bannerпервый приоритет из настроек Leaderboard.banners_settings.jsonобщий Visual Core через ключи leaderboard/top.backgrounds/локальный случайный фон, если banner не задан.style bgfallback — цветовая схема renderer.Откуда берутся очки
Модуль сам ищет подходящую таблицу и score-колонку, чтобы работать с разными версиями экономики и репутации.
shop.dbосновная база экономики.tablesusers, shop_users, economy_users, balances.score columnsbalance, money, cash, coins, points, score, total.guild filterWHERE guild_id = текущий сервер.reputation.dbосновная база кармы.tablesserver_reputation, reputation, users, user_reputation, reputation_users.score columnspoints, reputation, rep, karma, score, total, xp, value.limitсортировка по score DESC и TOP-3.Почему быстро работает
users/style/banner
md5 digest
mem_cache
cache png
if miss
old files
guild_id/categoryразные серверы и категории не смешиваются.style/title/subtitleсмена оформления создаёт новый hash.score_label/bannerфон и подпись влияют на cache.users/avatar_digestсмена состава, очков или аватарок обновляет картинку.Если модуль выключен
Отключение через module_states.json блокирует новые запросы рейтинга, но не удаляет настройки и cache-файлы вручную.
leaderboardосновной ключ модуля.leadersстарый alias для совместимости.top / boardдополнительные alias в текущем module aliases.доска_почетарусский alias для старых настроек.Карта технической логики
data/leaderboard_settings.json — стиль, тексты, роли, баннер и deploy.
data/shop.db — источник баланса.
data/reputation.db — источник репутации.
data/cache/leaderboard — готовые PNG-файлы.
data/banners_settings.json — общий Visual Core фон.
MAX_TOP_USERS3 игрокаCACHE_TTL90 секундCOOLDOWN180 секундSTYLES4 режимаCATEGORIES2 категорииDEPLOY5 попытокLeaderboardRendererPillow-рендер 1100×680.load_banner_backgroundиспользует custom banner как фон.load_local_backgroundберёт случайный фон из backgrounds/.draw_cardрисует карточки мест #1, #2, #3.avatar_imageкруглые аватарки участников.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.