⚠ DEV / TEST INSTANCE — changes here do not affect the live bot. Switch to goofbot.gyneric.net for production.
D Dev GoofBot Dev build

Changelog

User-visible changes to GoofBot. Latest at the top. Currently running v3.2.0.

v3.2.0

2026-04-29

League of Legends + Valorant tracking (highly requested!)

  • Experimental — currently running on a Riot dev API key while we wait for Riot to review our Production API Key application (the tier required for Valorant endpoints).
  • Dev keys rotate every 24 hours, so you may briefly see "API key not configured" until the operator rotates. Once Riot approves the Production key, the EXP banner goes away and the key becomes stable.
  • Tracking, refresh, and announcement settings are safe to configure now — your data persists across rotations.
  • Slash commands: /lol track | untrack | list | profile | matches | match and /valorant track | untrack | list | profile | matches.
  • Region picker covers every shard Riot exposes (NA1/EUW1/EUN1/KR/JP1/BR1/LA1/LA2/OCE/TR1/RU/ME1/SG2/TW2/VN2/PH2/TH2 for LoL; NA/EU/AP/KR/LATAM/BR for Valorant).
  • Per-queue W/L for non-ranked too — League's API only reports W/L for the two ranked queues, but the dashboard now also shows ARAM, ARAM Mayhem, Normals, Quickplay, Arena, Swarm, and rotating event modes by aggregating cached match digests.
  • Same approach for Valorant — Competitive, Unrated, Swiftplay, Spike Rush, Deathmatch, Team Deathmatch, and featured modes.
  • /lol matches queue:<id> filter — pull e.g. ARAM-only or Ranked-Solo-only matches.
  • /lol match <match_id> — single-match drill-down with both team comps, KDA, items, vision, gold.
  • New Gaming sidebar group with /games/lol and /games/valorant dashboard pages — tracklist with rank + per-queue stat columns, add-account form, settings card for the (next-phase) auto-announce loop.
  • Public preview at /demo/games/lol and /demo/games/valorant — what the integration looks like with fabricated data, no login required.

Moderation

  • /mod warn confirmation now echoes the reason — the ephemeral "Warned @user" reply showed the warning number and active count but not the reason itself. It now includes a Reason: line so the issuer doesn't have to dig through the rapsheet to verify what the warning recorded.

Analytics

  • Messages (30D) KPI fixed for every guild — the dashboard tile was stuck at 0 on every guild that hadn't opted into message-content storage (which is off by default for privacy). Activity now flows through a separate always-on counter that records counts only — no message content, no IDs, no per-message timestamps — so the KPI works without compromising the privacy posture.
  • The opt-in content log keeps doing its job for ticket history, edit/delete review, and the Logs-page search.

v3.1.0

2026-04-27

Auto-build template overhaul

  • Streamer / Community / Gaming / Everything templates now build a

much more complete server in one click: voice channels expand from

`voice-hub` alone to also include `stream-chat`, `music`, `afk`, and

`mod-voice`. Logs category gains `modmail`, `system-status`, and

(for Twitch-flavoured presets) `twitch-chat-log`.

  • Auto-creates more roles: Twitch Sub + Twitch VIP (for live-alerts

presets — wires straight into role-sync once a broadcaster links

their Twitch), Streamer + Creator self-tag roles (for clips presets).

  • Reaction-role panels expand by preset: Pronouns + Notifications +

**Colors** (the colors panel now auto-posts everywhere — was

previously template-only). Gaming preset adds Platform + Region.

Community adds Region. Everything adds both.

  • Starter content seeded in every preset: #rules gets the verify

panel embed posted automatically, `#general` gets a welcome message

pinned with links to `#roles` / `#support` / `#rules` / the docs.

  • Default chat commands for streamer / all / officialBot:

`!discord`, `!socials`, `!subscribe`, `!schedule`. Idempotent — won't

overwrite a custom command you already created with the same trigger.

  • Default chat-claim items for streamer / all: wave, hug, gg,

`lurk`, `f` with 30s cooldown. Master toggle stays OFF until

operator opts in.

  • Starboard defaults seeded (threshold 3, ⭐ emoji) when the preset's

starboard flag is on.

  • Post-build checklist — every preset finishes with a 2–4-item

next-step list shown on the Setup wizard hero card: link Twitch,

mod the bot, customise welcome/verify, review roles. The Twitch

items only show on presets that include live-alerts.

  • OperatorGuide on /docs — new "Auto-build (the one-click setup)"

handbook section explains exactly what each user-facing template

builds, what it doesn't do, and how idempotency works.

v3.0.0

2026-04-27

Standalone Twitch tenancy + Twitch viewer experience overhaul

  • Sign in with Twitch only — no Discord required. Twitch sign-in

for an unlinked viewer provisions a standalone tenant + lands them

on a dedicated `/twitch-bot/dashboard`. Linked viewers still resolve

to their Discord identity.

  • Unlinked Twitch viewers earn + play + claim in any guild. Until

now, chatters who hadn't linked Discord were locked out of the bot

economy entirely (no points earning, no chat games, no `!claim`).

Fixed: shadow balances + claim inventory tracked per Twitch user_id;

collapse into the cross-platform balance + Discord-keyed inventory

the moment they link.

  • Twitch chat XP with subscriber/VIP/mod multipliers. Standalone

tenants get a per-broadcaster XP curve; hybrid guilds get a parallel

shadow that collapses into the cross-platform XP table at link time.

  • Standalone Twitch dashboard at /twitch-bot/dashboard with

editable cards for chat games (master + per-game toggles + cooldown +

max bet), claim items (trigger registration with daily/seconds

cooldown), AutoMod / chat settings / blocked terms (via Helix on the

broadcaster's stored OAuth token), and analytics (chat lines/day,

top chatters, command usage, points distribution, top XP earners).

  • Auto-join Twitch chat for every standalone tenant via tmi.js

`syncChannels`. Bot needs to be modded in chat for `!ban` / `!timeout`

/ `!clear` / `!slow` / `!subsonly` to work — there's a "mod the bot"

prompt on the standalone dashboard.

  • Username-change handling — every Twitch chat message upserts the

viewer into a `twitch_viewers` registry keyed on the stable

`user_id`. Login renames auto-propagate to display + the previous

login goes into a `login_history` JSON array. History never breaks

on rename.

  • Upgrade to Hybrid — standalone tenants can link a Discord server

later via a guild-picker flow. Migration runs in a single

transaction: settings, claim items, claim inventory, points balances,

XP, watchlist row, `bot_mode = hybrid` all imported into the chosen

Discord guild. Snapshot saved for rollback.

  • Rollback — destination guild's dashboard shows a

"this server was upgraded from a Twitch-only tenant" banner with a

rollback button. Rollback removes only what we INSERTed at upgrade

time (settings, claims, points, watchlist row, bot_mode toggle) and

re-activates the standalone tenant. Discord-side post-upgrade changes

are discarded.

  • !points / !balance / !top for unlinked + standalone viewers.

Standalone tenants get a per-broadcaster leaderboard; unlinked

viewers in hybrid guilds see their shadow balance with a friendly

"link to keep these forever" hint.

  • Discord/Twitch sign-in switching — sign in with either platform

to access the same dashboard. Twitch-only sessions force Twitch-only

view of every guild they touch; Discord-signed sessions see the

guild's stored bot mode. Logging out + back in via the other

provider now works correctly (was forcing Twitch-only view due to a

column-name typo).

  • OAuth flow polish — drop forced consent on returning logins for

both Discord (`prompt=consent` removed) and Twitch (`force_verify`

default flipped to false). Mobile sign-in via Universal Links now

silently re-authorizes for already-consented users.

  • Hybrid Twitch tab editor parity — chat games config + claim

trigger editor now also live on the regular Twitch tab in hybrid

mode (previously only on `/twitch-home`). Single canonical POST

endpoint with `return_to` so saves redirect back to wherever you

submitted from.

**Schema additions** (all `IF NOT EXISTS`):

`twitch_viewers`, `twitch_viewer_points`, `twitch_viewer_xp`,

`twitch_standalone_tenants` + 5 standalone children,

`twitch_chat_xp` + 3 analytics counter tables, `twitch_tenant_upgrades`.

Plus PRAGMA-guarded ALTER TABLE additions: `tenancy` +

`twitch_user_id` columns on `web_sessions`, `daily` column on

`claim_items` (was added in v2.8.0; idempotent), `access_token` /

`refresh_token` / `token_expires_at` / `scopes` columns on

`twitch_standalone_tenants`.

v2.9.0

2026-04-27

Bot-mode framework + Twitch chat games + chat claim items

  • Bot mode (Hybrid / Discord-only / Twitch-only) per guild,

configurable from the Setup wizard with a confirm-on-save bar.

Hybrid is the default and unchanged from before. Discord-only

hides Twitch surfaces from the dashboard and parks the Twitch

runtime. Twitch-only opens a dedicated `/twitch-home` dashboard

with a Twitch-first sidebar (Home → Twitch home, Stream → Live

& chat / Clips, Safety → Moderation) and parks Discord-side

engagement features. Switching modes never deletes saved

configuration.

  • Twitch chat games: four stateless point wagers run on linked

chatters in your watched Twitch channels.

  • !slots <bet> — three reels of 🍒🍋🔔⭐💎 with up to 25× jackpot
  • !roulette <bet> — six-chamber Russian roulette
  • !flip <bet> — coin flip with mild house edge
  • !dice <bet> — 1-6 roll with tiered payouts

Master toggle `twitch_games_enabled` defaults OFF. Each game has

its own toggle (defaults ON when master is on). Per-user-per-game

cooldown plus configurable max bet keep things sustainable.

  • Chat claim items: streamer-defined collectibles your chatters

tally with `!claim <trigger>`. Streamer registers triggers on the

Twitch home dashboard (`bum`, `hug`, `wave`, etc.); each chatter

has a per-trigger inventory and the bot replies with their new

total on each claim. Each trigger can have a per-claim seconds

cooldown OR a once-per-day mode that resets at midnight UTC.

  • Twitch home dashboard (/twitch-home) — surfaces existing

Twitch features as a first-class layout instead of as a sub-tab

when in twitch-only mode. KPI strip, quick links into the full

Twitch config, embed editor for the live-stream embed, editable

chat-games config form, and the chat-claims trigger editor all

live here.

  • Per-mode sidebar reorganisation: each mode gets a layout

designed for it, not just hidden items from the canonical

sidebar. Twitch-only sees Home / Stream / Safety with three

curated entries; Discord-only sees the canonical sidebar minus

the entire Twitch section; hybrid is unchanged.

  • Route-guard middleware: typed/bookmarked URLs that don't apply

to the active mode redirect to the mode's home dashboard, so the

visible sidebar and the actual reachable routes always match.

Setup wizard + bot-mode POST + welcome-preview always reachable.

  • Per-mode runtime gates: each subsystem (welcome flow, Discord

XP, Discord points, Twitch points, announcer, EventSub, bridge,

go-live role) gets a one-line `isPlatformActive(guildId, ...)`

gate at its entry point. Hybrid mode returns true everywhere;

single modes skip the opposite platform's runtime work.

  • Docs page upgrades: new handbook sections for bot mode, chat

games, and claim items. Settings reference grouped under "Chat

games & claim items" before the broader Twitch group so the new

toggles are easier to find.

  • Mod cards mode-aware: structural filters / active warnings /

quick mod actions cards on the Moderation page tag themselves

`data-platform="discord"` and auto-hide in twitch-only mode.

Blocked words + command permissions stay visible because they

apply on Twitch too.

  • /clips sidebar highlight fixed: the Clips tab now highlights

correctly when on /clips (was passing `activeTab: "twitch"` and

highlighting the parent tab).

v2.8.0

2026-04-27

Public docs page + tickets polish + dashboard refresh

  • Public knowledge center at /docs (also /guide, /help).

Generated from the live command source + `SETTING_SCHEMA` so the

command index and settings reference always match the running build.

Includes a Start-here path, Core workflows, Operator guides (Server

setup / Tickets / Moderation / Community / Twitch / Settings model),

high-use jump-pills, and the full slash-command index.

  • Per-category ticket templates. Override the label, intro prompt,

and category-specific mod role per ticket type from the dashboard

Tickets tab. Built-ins still apply when nothing is overridden.

  • Ticket SLA tracking. New tickets_sla_warn_hours setting (default

24, 0 disables). Open-tickets dashboard table gains an Age column

that turns yellow at half SLA, red at full.

  • Bulk ticket actions. Bulk close every open ticket older than N

days through the canonical close path (transcript, archive move,

reopen button if enabled, close DM/rating). Bulk transfer re-tags

open tickets between categories.

  • Knowledge base articles. New kb_articles table + dashboard

editor on the Tickets tab + ephemeral `/kb search|show|list` slash

command so members can find staff-authored answers before opening

a ticket.

  • Reopen workflow (gated OFF). New tickets_reopen_enabled

setting; when on, the close embed gets a Reopen button that

restores opener access and moves the channel back to the open

Tickets category. Off by default — most teams prefer that closed

means closed.

  • Visual refresh. Rebalanced palette away from purple toward

blue/amber on graphite. New top-bar grouping with a cleaner user

chip, KPI strip on hero pages, theme-specific top-bar bg for

light/vaporwave/sakura. Mobile fix: logged-out Discord login CTA

no longer clipped on narrow viewports.

  • Density picker (small / medium / large) in the topbar alongside

the theme picker. Persisted in the `goofbot_density` cookie.

Scales root font-size + spacing tokens so every part of the UI

responds to the choice.

  • Tickets QoL fixes. KB dashboard editor now loads the article

body (was opening with an empty required textarea). `/ticket setup`

reads `admin_role` / `moderator_role` via `getSettingList` so

multi-role configurations work.

  • Dev tooling. npm run deploy-commands now auto-picks .env.dev

if present, falls back to `.env`. Lets dev iterate on slash command

shapes without manually exporting a different token.

v2.7.0

2026-04-24

QoL round 2 + auto-build expansion

  • Auto-build presets are now comprehensive. Each preset (Streamer /

Community / Gaming / Everything) builds out every channel relevant to

that style of server (tickets, mod-log, audit-log, starboard,

birthdays, boost announces, donations, voice hub, …) and flips the

matching feature flags on. Pick a preset, customize after.

  • Auto-create staff roles. When admin / mod roles aren't already

configured AND the bot has Manage Roles, auto-build creates **GoofBot

Admin** + **GoofBot Mod** with sensible default permissions and wires

them into `admin_role` / `moderator_role`. Mod-only categories (Logs,

Tickets) get matching read/write overwrites.

  • Welcome card live preview. Community tab → Welcome message now

shows a render of the join card with your accent / template / font

applied. Click 🔄 to refresh after editing branding.

  • Send a test Twitch event. Twitch tab → "Test &amp; observe" card

fires a synthetic Follow / Sub / Gift / Raid / Cheer payload through

the same dispatch pipeline as a real webhook so you can verify your

channel + ping role + template wiring without waiting.

  • Live EventSub viewer. Same card shows the last 25 EventSub events

that touched your guild, refreshed every 30s. In-memory ring buffer,

cleared on bot restart.

  • First-run guided tour. New admins land on the dashboard and get a

5-step modal walking them through auto-build, Twitch, welcome, and

the health-pip system. Dismissed once, gone forever (cookie-backed).

  • Reaction-role editor. Existing mappings now have an Edit button

that swaps in an inline emoji+role form, plus a Trash button with a

confirm prompt.

  • Reaction-role templates. One-click panels for Pronouns,

Notifications, Color roles, Region, Platform, and Age band — posts

the embed, auto-creates any roles that don't exist, wires the emoji

reactions in one go.

  • Floating toast stack with auto-dismiss for save / error feedback,

promoted from inline `.toast` messages.

  • Sortable tables. Add data-sortable to a table and column

headers become click-to-sort (numeric / text auto-detected).

  • Mobile sidebar drawer. Sub-1024px viewports get a hamburger

toggle that slides the sidebar in over the main content.

  • Per-section reset. Each settings card has a "Reset" button that

clears every key in that section (channels / roles / toggles /

numbers / text) without touching siblings.

  • Audit log pagination. 50 rows per page with prev / next, plus

a `data-sortable` table.

  • Nuclear setup options (☢). Setup wizard hides two heavy

destructive options behind a `<details>` panel + multi-step

confirms + typed phrase ("WIPE _server_" / "ARCHIVE _server_"):

  • Wipe + rebuild deletes every category and channel, then runs

auto-build. Roles untouched. Irreversible.

  • Archive + rebuild moves every existing channel under a new

`📦 Archive (read-only)` category locked to admins only, then

runs auto-build. Roles untouched. Reversible.

  • Owner-only. Both options are restricted to the actual Discord

server owner (the user whose Discord ID matches `guild.ownerId`).

Dashboard managers and Discord admins cannot trigger them, and the

bot owner has no special override — they still need to be the

server owner of the specific guild. The dashboard hides the panel

entirely from non-owners. Defense-in-depth: the server route does

its own ownership check, the auto-build module independently

re-verifies inside `wipeAllChannels` / `archiveAllChannels`, and

every attempt (allowed or denied) is recorded in the audit log.

v2.6.0

2026-04-25

Quality-of-life sweep

  • Auto-build wizard. Setup Wizard offers a one-click "Auto-build my

server" button that creates GoofBot's recommended categories,

channels, optional roles, automod defaults, and wires every relevant

guild setting in one shot. Three optional presets (Streamer /

Community / Gaming) tweak which features are auto-enabled.

  • Save indicator + leave-page warning. Settings form now shows a

"● Unsaved changes" pip and intercepts navigation away from the page

if you have pending edits.

  • Per-section health pips. Each settings card header carries a

green / yellow / red dot — green when ready, yellow when optional

config is missing, red when a hard dependency is unset.

  • Show only configured toggle. Hides every setting you haven't

touched so the Discord tab fits one screen.

  • Cmd / Ctrl + K focuses the sidebar feature search from any page.
  • Audit log quick filters. "My actions in the last 24h", "Mod

actions", "Owner-hub access" buttons on the audit page.

  • Live embed-template preview. Embed editor renders a faux-Discord

preview as you type title / description / colour.

  • Changelog page. This page — /changelog — is publicly readable.

v2.5.0

2026-04-24

Twitch + Discord feature batch

  • Voice-channel XP. Earn XP for time spent in voice (unmuted, not

alone, not bot). New `xp_voice_*` settings.

  • Loyalty quests. Daily-login streaks, chat milestones, referral

bonuses on top of the existing points system.

  • Server template export / import. Download every guild setting

+ tags + custom commands + role rewards + automod + blocked terms

+ embed templates as JSON, restore into another guild.

  • Tournaments. `/tournament create | join | start | report |

bracket | list` — single-elimination with random pairings, byes

auto-resolve, next round auto-generates.

  • Hype auto-clip. Twitch chat-velocity detector fires !clip

when msgs/10s spikes past a threshold.

  • Cross-server trust groups. `/trust create | join | configure |

leave | list` — opt-in sharing of blocked-words + automod regex

rules between partnered servers.

  • Donation alerts. Ko-fi webhook receiver at /webhooks/kofi

with optional bonus points to linked tippers.

  • Multi-language framework (locked). DeepL / LibreTranslate /

MyMemory translator with DB cache; flipped off at the module level

while we validate quality.

v2.4.0

2026-04-24

Owner Hub + security hardening

  • Owner Hub at /dashboard/owner — bot-wide analytics, all-guilds

list, audit log, access-control pane.

  • CSRF protection on every POST (auto-injected via layout).
  • Audit log with scope filter; every state-change recorded.
  • TOTP 2FA step-up for /dashboard/owner/* and /admin/analytics,

with QR-code enrolment + 8 single-use recovery codes.

  • MFA reset via DM approval — owner-initiated reset is gated by

the target's "Approve / Cancel" button in their DM.

  • Known-device tracking — owner-tier accounts get a 1-year

device cookie on first verify; new-device sign-ins fire a Discord

DM alert.

  • Support access framework. /goofbot support lets a guild

owner authorise the support team to access their dashboard until

the ticket closes.

v2.3.0

2026-04-24

Twitch alert + utility batch

  • EventSub event router. Per-guild-per-type editor for follower /

sub / resub / gift / raid / cheer / channel-points alerts —

channel + ping role + custom message template per event.

  • Raid auto-shoutout. Inbound raids fire !so for the raider in

Twitch chat with their last-played game.

  • /twitchmod slash command suite. Discord-side mirror of the

Twitch chat mod commands (timeout / ban / unban / clear / slow /

followermode / subsonly / emoteonly / title / game / raid).

  • Live-status badge endpoint. /live/<login>/badge.svg for

embedding on a streamer's site.

  • !mark VOD timestamps. Mods / VIPs mark moments during a live

stream; on `stream.offline` the bot posts a clickable list to a

linked Discord channel.

  • Clip gallery. /dashboard/guilds/:id/clips with auto-post on

new clip + filter by title / channel / clipper.

  • Cross-platform giveaway entries. !enter in Twitch chat joins

a Discord giveaway. Per-giveaway `platforms` choice (both /

discord-only / twitch-only).

  • Twitch schedule sync. Helix /schedule polled every 6 hours;

15-minute countdowns post per segment, plus a Monday 09:00 UTC

weekly roundup.