Skip to main content
A Discord ticket bot lives or dies on three questions: does it do what your team needs, does it get out of the way once it’s running, and can you actually see what happened after the fact. Here’s how that plays out for a support ticket system, a leveling system, and a message builder, and how better tickets, a Discord dashboard bot built around exactly those three questions, handles each one.

Setting up a Discord ticket system that doesn’t fall apart

A support ticket system’s job is simple to describe and easy to get wrong in practice: get a member’s problem to a staff member, keep a record of it, and don’t let it sit forgotten in a channel nobody’s watching. A few things separate a ticket setup that holds up from one that quietly rots:
  • Claiming. Without it, three staff members open the same ticket and none of them commit to answering. Claim/unclaim from the ticket channel itself keeps ownership visible.
  • Per-button permissions. Claim, unclaim, close, and voice-channel requests each get their own staff-or-not toggle, an allow-list for specific extra roles, and a block-list, instead of one server-wide “staff” role deciding everything.
  • Auto-close rules. A ticket with no reply in the given time, or one whose author already left the server, should close on its own instead of sitting in the list forever.
  • Verifiable transcripts. Anyone can screenshot a chat log. A transcript that’s signed the moment it’s created, and can be verified later, is the difference between “trust me” and proof.
  • Per-category staff permissions. A billing category and a bug-report category usually don’t need the same people in them. Locking staff roles per category, not server-wide, keeps that separation without a second bot.
  • Structured intake. A question flow before the ticket opens (what’s the issue, which product, any files) saves the first three messages of every ticket.
better tickets runs all of this from dashboard toggles: categories, staff roles, per-button permissions, question flows, auto-close rules and channel name templates are all pages, not a growing list of slash-command flags to memorize.

Setting up a leveling system people actually engage with

XP-for-messages is the easy 80%. What makes people notice and stay engaged is the other 20%:
  • Role rewards on level-up, so leveling up means something concrete, not just a number going up in an embed.
  • Chat and voice XP, since a voice-heavy community shouldn’t be invisible to the leveling system.
  • Your own XP curve, not a fixed formula that makes level 40 either trivial or unreachable for your server’s activity level.
  • Multipliers for boosted roles or event channels, so a double-XP weekend or a booster perk doesn’t need a manual recalculation.
  • A rank card, since a /rank embed with a progress bar is worth more to most members than a leaderboard entry alone.
better tickets’ leveling ships all five of those on the free tier - role rewards, curve, chat/voice XP and multipliers are the base mechanic at every tier, not a paid unlock. Plus and Max raise the caps (more reward tiers, more multipliers) and add one cosmetic extra, a custom-uploaded rank card background; the mechanic itself was never behind a paywall.

Sending messages without hand-written JSON

Discord’s modern message components (buttons, select menus, sectioned layouts with thumbnails, dividers) look better than a plain embed, but hand-writing them as raw JSON is slow and easy to get wrong. A Discord embed builder with a real editor fixes that:
  • A live preview while you build, so you’re not sending a test message to see if a button’s label fits.
  • Components that actually do something. A button embedded in a message someone else’s bot isn’t listening for is just a static image with a border.
  • Reusable output. JSON import/export means a message you built once can be versioned, shared with another staff member, or dropped into a different channel without rebuilding it.
  • The ability to reload and edit a message you already sent, instead of deleting and resending every time the copy changes.
The message builder covers all four: Components V2 blocks (text, dividers, galleries, sections, containers, buttons, selects), a live preview, working interactivity because a real bot is listening, and JSON import/export for the workflows that want it.

What “up to date” means in the code

Rank cards and panels are ContainerSectionThumbnail, not an embed with an image field.
Ticket/application questions have a real input type: text, number, file (8MB cap), channel, user, role. A number question rejects letters before it’s ever saved.
text, divider, gallery, section, container, buttons, selects, each with its own editor and live preview. Direct manipulation, no hand-edited JSON.
Same shape everywhere: channel templates, submission messages, rank backgrounds, roleplay text, cooldowns, all dashboard fields with sane defaults.

Picking your setup

1

Decide what you actually run

A moderation/music server needs different things than a support server with applications and jail.
2

Check the free tier honestly

What’s gated vs. just limited. See Premium.
3

Try it in one category first

See the Quickstart.

Quickstart

Live in five steps: invite, create a category, configure, send the panel.

FAQ

Staff permissions, transcript verification, prefixes and premium limits.