qBot is the bot in the MCME Discord server. It runs on Red-DiscordBot ("Red"), an open-source Discord bot. Red's features come in modules called cogs: some are built into Red (moderation, warnings, cleanup), others were written for MCME (the suggestion and bug boards, account linking, Patreon roles). This page is for staff and moderators: how to give qBot a command, which commands you will use day to day, and which role each one needs. Players only need the first two sections.
How to give qBot a command
qBot only answers when you mention it. The old
!prefix no longer works, and qBot has no slash commands yet.
- Type
@qband pick qBot from Discord's suggestion list (Tab or Enter). It turns into a blue tag. Typing@qBotas plain text does nothing. - Type the command after it and send:
@qBot help.
The mention must be the first thing in your message. Every example on this page is written as @qBot <command>. Words in <angle brackets> are required, words in [square brackets] are optional; leave the brackets out when you type. For the details of any command, send @qBot help <command>.
Why: Discord only lets a bot read the text of messages that mention it, unless Discord grants it a special permission (the Message Content intent). qBot does not have that permission. Buttons, drop-down menus and pop-up forms on qBot's posts work as normal.
Mentioning a member or a role in a command pings them. To avoid that, type their user ID or role ID instead (right-click, Copy ID; turn on Developer Mode in Discord's Advanced settings first). Commands that take a role also accept the role's name.
Commands for everyone
| Command | What it does |
|---|---|
@qBot help |
Lists the commands you can use. @qBot help <command> explains one. |
@qBot mcstatus |
Shows whether the Minecraft server is up: players online, version, and up to 10 player names. One check every 15 seconds per Discord server. |
@qBot link |
Starts linking your Discord and Minecraft accounts. qBot sends you a code by DM. The steps are on Linking Discord and Minecraft. |
@qBot unlink |
Removes your link and the Verified Ingame role. |
@qBot bug mytasks |
Lists the bug reports assigned to you. |
Suggestions and bug reports work with buttons, not commands:
- Suggest something: click Submit a Suggestion on the suggestion panel and fill in a title and description. Everyone can vote with the thumbs-up and thumbs-down buttons on a suggestion; click again to take your vote back. The author gets a DM each time the suggestion changes status.
- Report a bug: click Report a Bug on the bug panel, pick a category and fill in the form.
- A member can send one suggestion and one bug report per minute, and have at most 5 of each waiting for review. Staff are exempt.
- The dashboard panels next to them have private buttons: My Suggestions and Search for suggestions; My Tasks, My Reports and Search Bugs for bugs.
Who can use what
Each staff table below has a Role column:
| Role column says | Meaning |
|---|---|
| Mod | qBot's moderator role. qBot's admin role passes too. |
| Admin | qBot's admin role. The moderator role is not enough. |
| A Discord permission, e.g. Ban Members | Anyone whose Discord roles give that permission can use the command, even without qBot's Mod or Admin role. |
| Board staff | A role that an admin added as staff for that board (suggestions, bug reports or role audit), or the Manage Server permission. qBot's Mod and Admin roles do not count here unless they were added too. |
The server owner chooses which Discord roles are qBot's Mod and Admin roles, with @qBot set roles addmodrole @Role and @qBot set roles addadminrole @Role. The server owner passes every check. If a command or button refuses you and you think it should not, ask an admin.
As of November 2026 no Mod or Admin role is set, so a command marked Mod or Admin works only through the Discord permission in its row, or for the server owner. Making a role qBot's Mod role opens every Mod command to it. To open a single command to a role instead, the bot owner loads Red's Permissions cog once with @qBot load permissions, and the server owner or an Administrator adds a rule, for example @qBot permissions addserverrule allow whois @Staff.
Moderation
| Command | What it does | Role |
|---|---|---|
@qBot kick @member [reason] |
Kicks a member. | Admin or Kick Members |
@qBot ban @member [days] [reason] |
Bans a member, or a user ID of someone not in the server. days (0 to 7) also deletes that many days of their messages. |
Admin or Ban Members |
@qBot tempban @member [duration] [days] [reason] |
Bans for a while, for example 3d or 12h. Without a duration it uses the default, 1 day unless an admin changed it. |
Admin or Ban Members |
@qBot softban @member [reason] |
Bans and unbans straight away, to clear their recent messages. | Admin or Ban Members |
@qBot unban <user ID> [reason] |
Lifts a ban. Copy the ID from the modlog case or from the server's Bans list. | Admin or Ban Members |
@qBot voicekick @member [reason] |
Disconnects a member from voice. | Mod or Move Members |
@qBot rename @member [nickname] |
Changes a member's nickname. Leave it empty to clear it. | Admin or Manage Nicknames |
Example: @qBot ban 123456789012345678 1 Repeated griefing.
Warnings
A warning is worth points (1 unless you say otherwise). Admins can set automatic actions, such as a kick, when a member's points reach a total.
| Command | What it does | Role |
|---|---|---|
@qBot warn @member [points] <reason> |
Gives a warning. The reason is required. | Admin or Ban Members |
@qBot warnings @member |
Lists a member's warnings, with the ID of each. | Admin |
@qBot unwarn @member <warning ID> [reason] |
Removes one warning. | Admin or Ban Members |
@qBot reasonlist |
Shows the pre-set warning reasons. | Admin or Ban Members |
@qBot actionlist |
Shows the automatic actions and their point totals. | Admin or Ban Members |
@qBot mywarnings |
Shows your own warnings. | Everyone |
If qBot answers that custom reasons are not allowed, use one of the reasons from @qBot reasonlist.
Modlog cases
When an admin has set up a modlog channel, every kick, ban and warning becomes a numbered case there.
| Command | What it does | Role |
|---|---|---|
@qBot case <number> |
Shows one case. | Any staff member |
@qBot casesfor @member |
Browses all cases for a member (or user ID), one per page. | Any staff member |
@qBot listcases @member |
The same cases as a compact list. | Any staff member |
@qBot reason [case number] <reason> |
Sets or changes the reason of a case. Without a number it changes the latest case. | The case's moderator, Mod, or the server owner |
Cleanup
All cleanup commands need Mod or Manage Messages, and qBot needs Manage Messages in that channel. They work in the channel where you type them.
| Command | What it does |
|---|---|
@qBot cleanup messages <number> |
Deletes the last messages in the channel. |
@qBot cleanup user @member <number> |
Deletes that member's last messages (a user ID works for someone who left). |
@qBot cleanup bot <number> |
Deletes qBot's messages and the commands sent to it. |
@qBot cleanup before <message ID> <number> |
Deletes messages before a given message. |
@qBot cleanup after <message ID> |
Deletes everything after a given message. |
@qBot cleanup between <message ID> <message ID> |
Deletes everything between two messages. |
- Pinned messages are kept. Add
trueat the end to delete them too:@qBot cleanup messages 20 true. - Discord does not let bots bulk-delete messages older than 14 days.
cleanup textandcleanup duplicatescompare message text, which qBot cannot read. Don't use them.
Keep
cleanup messages,cleanup userandcleanup botat 100 or fewer. Above 100, qBot asks you to type yes or no, but it cannot read your reply, so it cancels. Run the command again for the next batch.
Custom commands
A custom command is a short reply that anyone can call up, for example a link to the rules.
| Command | What it does | Role |
|---|---|---|
@qBot customcom create <name> <text> |
Makes a new command. Anyone can then send @qBot <name>. |
Mod or Administrator |
@qBot customcom edit <name> <new text> |
Replaces the text. Always give the new text: without it qBot asks for it in a reply it cannot read. | Mod or Administrator |
@qBot customcom delete <name> |
Removes a command. | Mod or Administrator |
@qBot customcom list |
Lists all custom commands. | Everyone |
@qBot customcom show <name> |
Shows a command's text and settings. | Everyone |
cc is a short form of customcom, so @qBot cc list works too. A reply can be at most 2,000 characters.
Suggestion board
A suggestion moves through channels: pending, then approved, then implementation underway, then implemented. Staff can also deny it. Each suggestion gets a discussion thread when it is submitted, and the author gets a DM at every status change.
Buttons on each suggestion (Role: Board staff):
| Button | Shown on | What it does |
|---|---|---|
| Approve | Pending | Moves it to the approved channel. |
| Deny | Pending or approved | Asks for a reason, then closes it. |
| Delete | Pending | Removes it for good. |
| Start Implementation | Approved | Marks it as in progress. |
| Mark Complete | In progress | Moves it to the implemented channel and archives its thread. |
Overview commands (Role: Admin or Manage Server; the board staff role alone is not enough):
| Command | What it does |
|---|---|
@qBot suggestset list [status] |
Lists open suggestions, or those with one status: pending, approved, in_progress, implemented, denied or all. |
@qBot suggestset stale [days] |
Open suggestions that have not changed for 14 days, or the number of days you give. |
@qBot suggestset stats |
Counts per status, votes, approval rate and the top-voted suggestions. |
@qBot suggestset bulkdeny <IDs> [reason] |
Denies several at once: @qBot suggestset bulkdeny 1 3 5 Stale. |
@qBot suggestset bulkdelete <IDs> |
Deletes several for good, with their cards and threads. |
Bug-report board
A bug report is open until someone claims it or is assigned, then in progress, then resolved or closed. Each report gets a discussion thread.
Buttons on each report:
| Button | Shown on | Who | What it does |
|---|---|---|---|
| Claim | Open | Board staff | Assigns it to you and marks it in progress. |
| Assign / Reassign | Open / in progress | Board staff | Pick a member from a list to assign it to. |
| Set Priority | Open, in progress | Board staff or the assignee | Low, Medium, High, Critical, or none. |
| Add Note | In progress | Board staff or the assignee | Adds a note to the card and the thread. It pings nobody; one note per person every 10 seconds. |
| Resolve | In progress | Board staff or the assignee | Marks it resolved and moves it to the resolved channel. |
| Close | Open, in progress | Board staff | Closes it with a reason; you can name the bug it duplicates. |
| Delete | Open | Board staff | Removes it for good. |
| Reopen | Resolved, closed | Board staff | Moves it back to the reports channel. |
Overview commands (Role: Admin or Manage Server):
| Command | What it does |
|---|---|
@qBot bugset list [status] |
Lists active bugs (open and in progress), or those with one status: open, in_progress, resolved, closed or all. |
@qBot bugset stale [days] |
Active bugs with no activity for 14 days, or the number of days you give. |
@qBot bugset stats |
Counts per status, priority and category, and the top assignees. |
@qBot bugset assign <ID> @member |
Assigns a bug. Mention the member or give their user ID; a typed name is refused. |
@qBot bugset unassign <ID> |
Removes the assignee and sets the bug back to open. |
@qBot bugset priority <ID> <level> |
low, medium, high, critical or none. |
@qBot bugset note <ID> <text> |
Adds a note, like the Add Note button. |
@qBot bugset notes <ID> |
Shows all notes on a bug. |
@qBot bugset bulkclose <IDs> [reason] |
Closes several at once. |
@qBot bugset bulkdelete <IDs> |
Deletes several for good. |
Role audit
Find out when a member got or lost a role, and who made the change. Role: Board staff (the audit staff role) or Manage Server.
| Command | What it does |
|---|---|
@qBot audit role <role> [@member] |
All grants and removals of a role, optionally for one member only. |
@qBot audit user @member |
All role changes for one member. |
Example: @qBot audit role Builder. Discord keeps its audit log for about 45 days. For roles that admins put on qBot's watch list, qBot keeps its own copy for longer (180 days by default). Results come in pages; the Previous and Next buttons only work for the person who asked.
Escalation alerts
Discord lets someone with Manage Roles hand out every role below their highest role, so even a role with no permissions can extend what they can reach. qBot watches for this on its own; there is nothing to set up. A powerful role is one with Administrator, Manage Server or Manage Roles. Bot-managed roles don't count, because nobody can assign them.
qBot sends an alert titled Possible Permission Escalation when:
- A role is assigned that lets a member hand out a powerful role they couldn't before. The alert names the member, who gave the role and what they can now hand out.
- The role list changes with the same effect: a role is dragged, gains or loses a permission, or is created. Server Settings → Audit Log shows who made the change.
Alerts go to the bot owners by DM and to a private log channel.
If the change was meant to happen, such as a real promotion, there is nothing to do. If not, remove the role or move it lower in Server Settings → Roles. qBot only reports and never undoes a change itself.
To see who can hand out what right now, use @qBot auditset escalation (Admin or Manage Server). Alerts only fire on changes, so this is how you see what has always been that way. Each group in the report can hand out the role named and every powerful role below it. Nobody can hand out their own highest role, so someone whose highest role is Valar / Admins appears in the group below it.
How the watch works in detail is on the staff-only MCME Redbot page.
Account links
These commands work in the main MCME Discord server (qBot's home server for account links).
| Command | What it does | Role |
|---|---|---|
@qBot whois @member |
Shows the member's linked Minecraft name, UUID and when they linked. | Mod or Manage Server |
@qBot whois <Minecraft name> |
Shows which Discord account has that Minecraft account linked. Also finds a link after a Minecraft name change. | Mod or Manage Server |
@qBot linkset forcelink @member <Minecraft name> |
Links the accounts without the in-game code, and gives the Verified Ingame role. | Admin or Manage Server |
@qBot linkset forceunlink @member |
Removes a member's link and the Verified Ingame role. | Admin or Manage Server |
@qBot linkset list |
Lists all linked accounts, 15 per message. | Admin or Manage Server |
forcelink refuses when the member is already linked, or when the Minecraft account is linked to someone else: unlink first. Don't add or remove the Verified Ingame role by hand: qBot puts it back the way the links say and logs a warning.
Who has linked?
qBot's link records are what count, not the Verified Ingame role. Perks reads those records to give supporters their perks, and whois and linkset list read them too. To check one member, use @qBot whois @member or @qBot whois <Minecraft name>; to see everyone, use @qBot linkset list.
The role is a badge that shows a member has linked. It can be wrong for a while: someone can add it by hand until qBot takes it off again.
With no Mod role set (see Who can use what), only members with Manage Server can run whois. It shows which Discord account owns which Minecraft account, so open it to another role only if you trust that role with that.
The Verified Ingame role
- qBot finds the role by its ID, so renaming it or changing its colour breaks nothing. Don't delete it and create a new one: the new role has a new ID, an admin has to set it again with
@qBot linkset role @Role, and members who linked earlier don't get it. - Keep it below Staff in Server Settings → Roles. It has no permissions, but Discord lets Manage Roles (and kick, ban, timeout and nickname changes) reach only below a member's highest role. Placed above Staff, it becomes the highest role of every Staff member who links, and they can then hand out every role in between. The same rule goes for the Patreon tier roles.
- qBot enforces this for the roles it hands out.
@qBot linkset rolerefuses a role ranked above any role with Administrator, Manage Roles, Kick, Ban or Timeout Members, or Manage Nicknames (bot roles don't count), even for the server owner. If the role is moved too high later, qBot stops giving it out or putting it back. Linking and perks keep working, because they come from the link and not the role. Members who already hold the role stay lifted until it is moved, so qBot posts Verified Role Too High in the account link log channel and DMs the bot owners, naming who it lifts right now, then Verified Role Position Fixed once it is back down.@qBot linkset checkpermsshows the check. The same move also sets off an escalation alert. - The Patreon sync won't give out a tier role ranked above those roles either. It lists the role as an error in every sync report until it is moved, and members whose subscription lapsed still lose it.
- A member's name takes the colour of their highest coloured role, so with the badge placed low, roles such as Supporter keep their colour.
Patreon checks
qBot gives Patreon members their Discord roles on its own, on a schedule (hourly by default), and removes them when a membership ends. These commands work in the main MCME Discord server. Role: Admin or Manage Server.
| Command | What it does |
|---|---|
@qBot patreonset check @member |
One member's Patreon status: their Pledge, last charge, tiers, Patreon name, and whether their roles are in sync. |
@qBot patreonset status |
The sync settings, the last sync, the patron count and the roles qBot manages. |
@qBot patreonset audit |
Lists everyone whose patron roles don't match Patreon. Changes nothing. |
@qBot patreonset sync |
Runs a sync now instead of waiting for the next one. |
Admins set up the boards, their channels and staff roles, the link and Patreon settings, and the modlog channel. The word filter is switched off, because it needs to read message text.