Community Tools

Tickets

A ticket type is one button on a panel. Each type has its own name, emoji, button style, category, staff roles, opening message and channel-name format, all configured on the Tickets tab.

  1. Create your ticket types on the dashboard.
  2. Publish the panel to a channel. either from the dashboard or with /setup_tickets.
  3. A member clicks a button and gets a private channel visible only to them and the staff roles you named.

Tickets can be closed, reopened, transcribed and deleted. A transcript is saved automatically before deletion, and deletion has a short countdown so it can be stopped. A member cannot open two tickets of the same type at once.

Ticket state lives in the channel topic, so it survives a bot restart. Renaming or clearing that topic by hand will detach the ticket from Graffiti.

Auto-roles

Pick any number of roles under the Roles tab and every joining member receives all of them in a single assignment. Graffiti's own role must sit above the roles it is granting, or Discord will refuse.

Join-to-Create voice

Nominate a hub voice channel. Anyone who joins it is moved into a fresh room of their own, and the room disappears when the last person leaves.

The room's owner gets a control panel for:

  • Renaming the room and setting a user limit
  • Locking it, or hiding it entirely
  • Setting a status, toggling NSFW, overriding the voice region
  • Allowing or blocking specific members and roles
  • Claiming ownership when the original owner has left

Preferences are remembered per member, so a regular's room comes back the way they left it. Defaults for the room name and user limit are set on the Voice tab, where {user} is replaced by the member's name.

Use /j2c create to have Graffiti build and configure a hub channel for you, or /j2c set to point at one you already have.

Welcome messages and DMs

Two separate greetings with separate switches: one posted in a channel, one sent as a direct message. Either can be plain text or an embed.

Both support these placeholders:

PlaceholderBecomes
{user}A mention of the joining member.
{username}Their name, without the mention.
{server}The server name.
{membercount}The member count after they joined.

The in-channel message can show an avatar, account age, member count, timestamp and a banner image, and can delete itself after a set number of seconds. The DM can log failures to a channel of your choosing, which is worth enabling, closed DMs are common and silent otherwise.

Preview both against your own account with /testwelcome.

Activity and the leaderboard

Activity tracking counts messages and voice seconds per member, including people who were already in a voice channel when the bot started. It is the one module enabled by default. You can exclude specific text and voice channels.

Each server gets a public web leaderboard showing the top 100 members by messages, sortable by voice hours. /leaderboard posts the link. The page is public to anyone with the address.

Hall of Fame

Members react to a message with a star. Once it reaches your threshold between 1 and 50, default 5 — the message is reposted to your Hall of Fame channel.

  • Star counts update as reactions come and go.
  • Edits to the original are reflected in the post.
  • Deleted originals are greyed out rather than vanishing.
  • Posts can optionally be removed if they drop back below the threshold.
  • Self-stars and bot messages are allowed or blocked as you prefer.

Setting a channel for the first time runs a one-time sweep of history, so an established server does not start with an empty wall. /hof leaderboard ranks the most-starred messages; /hof stats summarises.

Counting

Nominate a channel and members count upward, one number per message. Graffiti tracks your server's highest count. /count stats shows where you are and what the record is.