Community Features
Reaction roles, sticky messages, ghost pings, welcome & goodbye messages, global member profiles, and per-server branding. Looking for tickets?
On this page
Ticket System#
A full support platform — departments, conditional forms, SLA timers, staff routing, automation, satisfaction ratings and searchable transcripts.
Tickets have their own documentation page.
Departments & forms#
Separate teams with their own staff, response targets and conditional intake forms.
SLAs & automation#
Response targets that pause while you wait on the member, plus trigger-condition-action workflows.
Analytics & transcripts#
Response times, satisfaction, workload and heatmaps — with searchable, exportable transcripts.
Reaction Roles#
Let members self-assign roles using emoji reactions, clickable buttons, or dropdown select menus.
Panel Types#
Reaction Panel#
Classic emoji-reaction style. Members react to the message to get/remove a role. The bot lists available roles and their emojis in the embed, then adds its own reactions as prompts. Requires the bot to have Add Reactions permission in the channel.
Button Panel#
Discord component buttons — each role becomes a labeled button with an optional emoji. Clicking a button toggles the role on or off. Supports up to 25 roles per panel (5 buttons per row).
Dropdown Panel#
A Discord select menu. Members pick one or more roles from a dropdown list. Their selection replaces whatever roles from that panel they previously held. Supports up to 25 options, each with an optional description.
Setup Flow (Dashboard)#
-
1
Open the panel builder
Go to Dashboard → Reaction Roles → + New Panel. Give the panel a title and optional description.
-
2
Choose a panel type
Select Reaction, Button, or Dropdown. The type determines how members interact with the panel.
-
3
Add role entries
Click + Add Role for each role. Each entry has an emoji picker, a label (shown on buttons/dropdowns), and a role selector. The emoji defaults to 😊 — click it to pick a different one.
Reaction panels use the emoji as the reaction trigger. Button and dropdown panels display the emoji next to the label.
-
4
Choose a channel and post
Select the channel where the panel should appear, then click Create Panel. The bot posts the message immediately.
Editing a Panel#
Open Dashboard → Reaction Roles, expand the panel, make your changes, and click Save. Saving a panel deletes the old message and reposts a fresh one in the same channel — the panel's position in the channel will move to the bottom. If you need it pinned, re-pin it after saving.
How Each Type Works for Members#
| Type | How to get a role | How to remove a role |
|---|---|---|
| Reaction | React with the emoji shown next to the role | Remove your reaction |
| Button | Click the role's button (toggles on) | Click the same button again (toggles off) |
| Dropdown | Open the dropdown, tick the roles you want, submit | Open the dropdown, untick the role, submit — selection replaces previous |
Commands#
reactionroles setupCreate a role panel with a custom title and description. layout chooses emoji reactions (default), buttons or a dropdown.reactionroles addAdd a role (+ emoji/label) to an existing panel.reactionroles removeRemove a role entry from an existing panel.reactionroles listList all role panels in this server with type, channel, and message ID.reactionroles deleteDelete a panel and remove the original panel message.Sticky Messages#
A message that automatically re-posts to the bottom of a channel whenever new messages push it up — perfect for rules, FAQs, or pinned announcements.
How It Works#
When a member sends a message in a channel that has a sticky, the bot waits 1.5 seconds (debounce) and then:
- Deletes the previous copy of the sticky from that channel
- Re-posts it as a fresh message at the very bottom
- Saves the new message ID so the next cycle knows which copy to replace
The 1.5-second debounce means rapid messages collapse into a single repost — the bot won't flood the channel if several messages arrive in quick succession.
Setting Up from the Dashboard#
-
1
Open Sticky Messages
Go to Dashboard → Sticky Messages. The page shows all active stickies for your server as cards, each with a yellow left-accent border.
-
2
Click "Add Sticky"
Click the Add Sticky button in the top-right of the page header. A modal opens with a channel selector and a message content textarea.
-
3
Fill in the modal
Select the channel, type your message (Markdown is supported), then click Save Sticky. The character counter in the top-right of the textarea turns red when you approach the 2000-character limit. The bot immediately posts the sticky in that channel.
-
4
Edit or remove
Each sticky card has an Edit button (opens the modal pre-filled with the current content, channel locked) and a trash icon that opens a confirmation modal before deleting. Confirming removal deletes the embed from Discord and removes the sticky from the database.
Behaviour Reference#
| Scenario | What happens |
|---|---|
| New message in channel | Bot waits 1.5 s, deletes old embed, reposts sticky at bottom |
| Several rapid messages | Timer resets on each message — only one repost fires after the burst |
Sticky updated via dashboard or /sticky set | Old embed deleted, new embed posted immediately; next repost cycle uses fresh content |
Sticky deleted via dashboard or /sticky remove | Embed removed from Discord, no further reposts in that channel |
| Bot message in channel | Ignored — bot's own messages do not trigger the repost timer |
Commands#
sticky set <message>Set or replace the sticky message for the current channel. The bot posts the embed immediately and records the message ID. Requires Manage Messages permission.sticky removeRemove the sticky from the current channel and delete the embed from Discord.sticky viewShow the current sticky content, who set it, and when — without reposting it.Ghost Ping#
Silently ping every new member in a channel with a short message, then delete the ping about a second later — they keep the notification, the channel stays clean. Set up as many as you like across different channels.
How It Works#
When a member joins, the bot — for each configured channel — mentions the new member with your message, then deletes that message after ~1 second. The member still gets the ping notification, but no permanent message is left behind.
Setting Up from the Dashboard#
-
1
Open Ghost Ping
Go to Dashboard → Ghost Ping (under Engagement, just below Sticky Messages). It lists every ghost ping as a card.
-
2
Click "Add Ghost Ping"
Pick a channel, type a short message, and choose whether it's enabled. Save, and new members will be pinged there.
The picker lists every channel Azra can post in, grouped by kind — text and announcement channels, the text chat inside voice and stage channels, and threads (public and private). Only active threads appear: an archived thread can't be posted in until someone reopens it.
-
3
Edit or remove
Each card has Edit (message + enabled toggle; channel locked) and a delete button with a confirmation step.
Commands#
ghostping add <channel> <message>Add or update a ghost ping for a channel. Requires Manage Server.ghostping remove <channel>Remove the ghost ping from a channel.ghostping listList every ghost ping configured for the server.These also work as prefix commands — e.g. !ghostping add #welcome Welcome aboard! (alias !gp); omit the channel to target the current one.
Welcome & Goodbye System#
Greet new members with a rich embed, a custom-designed image, or plain text — and mark departures the same way. Plus auto-roles, welcome DMs, and link buttons.
Two Messages, One Page#
Welcome (posted when someone joins) and Goodbye (posted when someone leaves) are configured independently — their own channel, their own on/off switch, their own style and their own text. The Welcome / Goodbye switch at the top of Dashboard → Welcome picks which one you are editing; both are saved together, so flipping between them never loses work.
Message Styles#
Each message is built in exactly one of three styles — they can't be combined. Welcome and Goodbye can each use a different one.
Embed#
The bordered card Discord renders from text you fill in: author line, title, description, up to 10 fields, thumbnail, banner image, footer and timestamp — in your accent colour.
Image#
A picture Azra draws for every member in the layered designer — their avatar, name, your server icon, the member count. Arrange it yourself; what you see is what Discord gets.
Text#
A plain chat message with Discord markdown. Lowest overhead, and the only style that needs no extra bot permissions beyond Send Messages.
Placeholders#
Anywhere you type text — embed title, description, fields, footer, plain text, the welcome DM, the auto-nickname, a text layer on the image — these are swapped for the real member's details when the message is sent.
| Placeholder | Becomes |
|---|---|
{user} | A real @mention that pings the member. On an image layer it is drawn as their display name — a picture cannot mention anyone — so reach for {username} or {displayName} there and say which name you mean. |
{username} | Their unique Discord handle (e.g. jane_doe) — never localised, never per-server. |
{displayName} | What Discord actually shows in chat: their nickname in this server if they have one, otherwise their account display name, otherwise their handle. This is the one to use in a greeting. |
{server} | Your server's name. |
{rules} | A clickable #channel link to your rules channel — pick it under Rules channel on the Welcome page. Azra stores the channel itself, not its name, so renaming it never breaks your message. With no channel picked the word is simply left out. |
{memberCount} | The member count, formatted (e.g. 4,218). |
{count} | The same number as an ordinal (e.g. 4,218th). |
{joinDate} | The date they joined (e.g. Jul 14, 2026). |
Image text layers support {username}, {displayName}, {server}, {memberCount} and {joinDate} — the chips under the TEXT box insert them for you. {rules} is not among them: a picture cannot hold a clickable link, so put it in the message, embed or DM instead. {user} still works on a layer saved earlier (it draws the display name), but it is no longer offered as a chip — it was indistinguishable from {displayName} on a picture.
The Image Designer#
Choosing the Image style opens a layer editor, the same idea as Photoshop: a 600×300 canvas holding up to 40 layers stacked back to front. The bottom layer is the background (it can't be deleted), and everything else is a text or picture layer you place yourself. The bot re-draws the design for each member with their own avatar and name.
-
1
Set a background
Upload a picture or paste an
httpslink into Background image. Leave it empty for no background at all — the card is drawn transparent behind your layers, so it blends into Discord. Uploaded pictures are re-hosted on Discord's CDN so the link never expires; pasted links must come fromcdn.discordapp.com,media.discordapp.net,i.imgur.com,files.catbox.moeori.ibb.co. -
2
Drop in the content
The Content presets add the pieces worth putting on a card in one click: profile picture, server icon, username, display name, server name, member count and join date. A ticked preset is already on the canvas. Use + Text / + Image for anything else.
-
3
Arrange it
Click a layer to select it, drag to move, pull a white handle to resize, use the dot above it to rotate, and double-click a text layer to type straight on the canvas. The layers list on the left reorders, duplicates and deletes; Align to canvas snaps a layer flush to an edge or the centre.
-
4
Style it
The properties panel styles whichever layer is selected — see the table below. Every change repaints the live preview on the right instantly.
-
5
Test render
Click Test render above the preview. Azra draws the card with the bot's own renderer on the server and shows you the exact PNG Discord will receive — the way to confirm your fonts and pictures resolve on our host, not just in your browser. Edit anything to go back to the live canvas.
| Layer option | What it does |
|---|---|
| X / Y | Position of the layer's centre in pixels (300, 150 is dead centre of the card) |
| Width / Height | The layer's box. For text it's the box the text is laid out and aligned in |
| Rotation / Opacity | Tilt around the centre; how see-through the layer is (dim a background so text stays readable) |
| Font | Sans, Display, Serif, Mono or Impact. Azra resolves the closest family it has installed when it draws the real image — Test render shows the truth |
| Size / Weight / Align / Line height | Standard type controls. Align positions the text inside its own box |
| Colour or Gradient fill | A flat colour, or a two-colour fade at any angle (the gradient replaces the flat colour while it's on) |
| Stroke (outline) | A border around every letter — the reliable way to keep text readable over a busy background |
| Shadow | A drop shadow with blur, colour and an offset you can drag on a small pad |
| Glow | A coloured halo radiating evenly around the layer (text or picture) |
| Image source | Member avatar and Server icon are filled in live per member; Image URL is a fixed picture you upload or link |
| Fit | cover fills the box and crops, contain shows the whole picture, fill stretches it |
| Circle % | 0 = square, 50 = a perfect circle. This is how you get a round profile picture |
Extra Actions (Welcome only)#
| Action | What it does |
|---|---|
| Welcome DM | Also greets the member privately. Turn on Mirror the welcome message to send the exact same message you post in the channel — embed, image or text, with the same buttons — or leave it off to write a separate DM as plain text or an embed. Members can block DMs from servers, so a DM may silently fail — never put anything essential only in the DM. The DM's own link buttons are Pro; the DM itself is free. Azra always adds a greyed-out button naming your server, on every plan, so the member can tell which server the DM is from. |
| Auto-roles | Roles handed out the moment a member joins. Azra can only assign roles below its own highest role, and never bot/integration-managed roles — the picker flags any role it can't grant. Needs Manage Roles. Free on every plan. |
| Auto-nickname (Pro) | Renames new members to a pattern like {username} | Guest. Needs Manage Nicknames. Discord never lets a bot rename the server owner, so the owner keeps their name. Requires an active plan — without one the pattern stays saved but nobody is renamed. |
| Separate bot welcome | Joining bots get their own short announcement in a channel you choose (usually staff-only) instead of the normal welcome message. |
| Message buttons | Link buttons under the welcome message — your rules channel, a guide, your website. Discord only allows link buttons here, so every URL must start with https://. One on the Free tier, up to 5 on Pro; extras you set up on Pro are kept and simply not shown until you renew. |
Permissions Azra Needs#
| Permission | Needed for |
|---|---|
| View Channel + Send Messages | Posting any welcome or goodbye message at all |
| Embed Links | The Embed style |
| Attach Files | The Image style (the card is uploaded as a PNG) |
| Manage Roles | Auto-roles — and Azra's own role must sit above every role it hands out |
| Manage Nicknames | Auto-nickname (never applies to the server owner) |
Commands#
welcome set-channelSet the channel where welcome messages are posted.welcome enable / disableToggle the welcome system on or off.welcome infoShow the current welcome configuration summary.Global Profiles#
A member's identity across every server Azra is in — badges, memberships and standing, assembled only from what each participating server has consented to share.
whois view [user]Open a global profile. Leave user empty for your own. Badges, membership history and standing are shown; anything a server has not chosen to share is left out, not hidden.whois showcasePin up to 5 earned badges to your profile header.whois sharingManage what this server shares to member profiles. Requires Manage Server.whois verify <user> <state> [reason]AZRA staff only — set verification to Verified, Pending, Not Verified or Revoked.whois flag <user> <kind> <on> [reason]AZRA staff only — place or lift the Under Review / Restricted state.What a server shares#
Sharing is per-category and minimal by default: membership and verification are on, moderation history, activity, roles and support history are off until a server owner opts in. A category that is off is never rendered on a profile — so a server can participate without exposing the parts it would rather keep.
| Category | Shared by default | What it contributes |
|---|---|---|
| Membership | Yes | That the member is (or was) in the server, with join and leave dates. |
| Verification | Yes | This server's verification outcome for the member. |
| Moderation history | No | Shareable moderation actions — never case notes or staff-only detail. |
| Activity | No | Message and voice totals used for achievement badges. |
| Roles | No | The roles the member holds in this server. |
| Support | No | Support/ticket participation counts. |
Standing and verification#
Standing is a named state with a plain explanation, never a score: Excellent, Good, Limited, Under Review or Restricted. Verification is separate — Verified, Pending, Not Verified or Revoked — and only AZRA staff can change it. Every change is written to the profile's timeline, and staff-only entries are never shown on a public profile.
Branding#
Make the bot look like it belongs to your server — set a per-server nickname, brand name, logo, accent colour, and footer that appear on everything it posts.
Options#
| Option | Where it shows up |
|---|---|
| Bot nickname | The bot's display name in your server (this server only). Needs the bot's Change Nickname permission; applied to Discord instantly. |
| Brand name | The sender name on webhook posts (mod-log, etc.) and the author line on branded embeds. |
| Logo | A direct https image URL used as the webhook avatar and embed author icon. |
| Accent colour | The colour bar on embeds the bot posts. Picked as a hex value (e.g. #5865F2). |
| Footer text & icon | Optional small text and icon at the bottom of branded embeds. |
Setup Flow (Dashboard)#
-
1
Open Branding
Go to Dashboard → Branding. The page has a live Discord-style preview that updates as you type.
-
2
Set the nickname (optional)
Type a nickname and click Save Nickname. This is saved separately and changes the bot's name in Discord immediately — it requires the bot to hold the Change Nickname permission.
-
3
Add your brand name, logo, colour and footer
Fill in the brand name, paste an
httpslogo image URL, pick an accent colour, and optionally add footer text/icon. Tip: upload your logo to any Discord channel and copy its image link to get a stable URL. -
4
Save
Click Save Branding. Changes apply to the bot within a few seconds (falling back to a 5-minute refresh if the bot is briefly unreachable).