Every command, one prefix.

203+ commands across 16 categories. Search, browse, or jump to a section. Everything Kuma Bot can do is right here.

No badge
anyone can run it
Moderator
your mods and the owner
Owner
the server owner only
Permitted
owner by default, and you can hand it to a moderator with !perms grant

Start here

21 commands that cover most of a first week — setting Kuma up, the everyday member ones, and the moderation you will reach for first. Pick one to see it in full.

203+
commands
24
modules
16
categories

Every module is yours to configure.

Kuma ships with sensible defaults, but nothing is locked in. Flip features on or off with !toggle, raise the warning threshold, change auto-mute length, and rewire every log, role, and channel any time.

!muteduration 2h
Auto-mute length, default 30m
!threshold 5
Warnings before auto-mute, default 3
!toggle economy off
Master switch per module
!antiraid on/off
Raid protection toggle
!welcome gif <link>
Show a GIF when members join
!keyword add <phrase>
Monitor custom keywords
Toggleable = can be turned on/off Configurable = has tuneable settings

AutoMod

On by default

Kuma watches every channel automatically. Members get warnings, 3 warnings means an automatic 30-minute mute. Anti-raid is on by default.

Spam
10+ repeated characters → delete + warn.
Invite links
Unauthorized Stoat invite URLs → delete + warn.
Mass mentions
5+ mentions in a single message → delete + warn.
Message flooding
5+ messages within 5 seconds from one user → delete + warn.
Blacklisted words
Server-specific word list → delete + warn.
Auto-mute threshold
Hitting the warning threshold (default 3) auto-mutes for the configured duration (default 30m).

Anti-Raid

On by default

Kuma watches for coordinated attacks. When triggered, every protection fires instantly, and !panic off rolls it all back.

Detection triggers
  • Join velocity
    5+ members join within 10 seconds.
  • New-account velocity
    3+ brand-new accounts join within 10 seconds (age-weighted, trips faster than the generic threshold).
  • Name cluster
    3+ new accounts with near-identical names (e.g. "Raider1", "Raider2") join in quick succession.
  • Message burst
    10+ messages from members who joined <5 minutes ago, within 8 seconds.
  • Content fingerprint
    3+ new accounts post near-identical content (the same copy-pasted message or link) within 45 seconds, coordinated copy-paste raids.
  • Slow drip
    3+ new accounts auto-removed for spam/scam within 10 minutes, a distributed raid that trickles in too slowly to trip the burst detectors.
Automated response
  • Staff alert
    Mentions all mods + owner in the punishment log with full details.
  • Auto-role disabled
    Backs up and removes auto-role so raiders can't grab it.
  • File uploads blocked
    Denies attachment permission for @everyone on all channels.
  • All channels locked
    Denies SendMessages for @everyone on every text channel.
  • Message purge
    Deletes the raid messages (message-burst and content-fingerprint triggers).
  • Raid waitlist
    On by default: new joiners during the raid are briefly held (timeout + a friendly DM), then let back in one at a time when it clears, so raiders trickle in and get caught instead of flooding the server at once. Staff are told how many are waiting and can review (!raid waitlist list) or admit early.
  • Soft response (optional)
    Set !raid mode soft and a join-based raid holds new joiners on the waitlist instead of locking the whole server, so existing members keep chatting. Raiders posting inside still escalate to a full lockdown.
  • Auto-unlock
    Channels reopen automatically after ~5 minutes if staff are away, so a community is never left locked.
  • Cleanup
    !raid cleanup bans everyone who joined during the raid and deletes their recent messages (preview + confirm, skips owner/mods/Kuma).
  • Recovery
    Run !panic off to unlock immediately, restore auto-role, release held members, and clear raid state.

Toggleable modules

!toggle <module> on/off

Every system is a single command away from being switched off. Defaults are sensible, flip what you don't need.

automodOn by default

Spam detection, invite links, mass mentions, flooding, and blacklisted words.

contentfilterOff by default

Advanced AutoMod rules, caps, link spam, repeated text, discriminatory language, toxicity, phishing, and scam protection.

antiraidOn by default

Join-velocity and message-burst raid detection.

loggingOn by default

Punishment, message, and server audit logs.

casesOn by default

Moderation case tracking, appeals, and resolution.

welcomeOn by default

Welcome messages for new members.

levelingOn by default

XP and level-up system.

ticketsOn by default

Private support ticket channels.

chatcoinsOn by default

Earn coins passively by chatting (1-5 per message, follows XP cooldown). Separate from the Economy module and on by default, so coins can rise even when Economy is off. Toggle it off if you don't use coins.

reviverOff by default

Ping a role when a channel goes inactive.

economyOff by default

Coins, daily, gifting, and leaderboard.

gamesOff by default

Mafia, Word Chain, Word Generator, trivia, wordle, connect4, RPS, and more. Most work without the economy module; only coin-betting games (coinflip, blackjack, duel) need it.

petsOff by default

Server Pet: the whole community adopts and looks after one pet with !pet. Feeding, playing and grooming keep its needs up, and neglect makes it unhappy. One pet per channel, or a single shared pet across a bridge. Needs a per-person cooldown by design, so no one member can care for it alone.

giveawayOff by default

Reaction-based giveaway system.

dropsOff by default

Random reward drops in active channels (trivia + claim races).

feedsOff by default

YouTube, RSS, and Twitter content routing.

keywordsOff by default

Custom keyword monitoring with alert and auto-reply modes.

blueskyOff by default

Follow Bluesky accounts, auto-posts new skeets to channels.

rssfeedsOff by default

Follow RSS, Atom, or JSON feeds, auto-posts new items to channels.

starboardOff by default

Highlight popular messages, enough reactions reposts a message to a highlights channel.

agegateOff by default

Account-age gate, flag, quarantine, or kick accounts younger than a threshold on join.

animeOff by default

Anime lookup via AniList, search titles for synopsis, score, episodes, and airing info.

roleplayOff by default

Anime reaction GIFs, hug, kiss, pat, cuddle, and more.

gachaOff by default

Character collection, roll random anime characters and react to claim them. One owner per character per server.

POST anywhere → drop into a channel

Generate a token with !webhook create and point GitHub, Twitch EventSub, or any service at the URL below. Payloads from GitHub (push, PRs, issues) and Twitch (stream online) are auto-formatted; generic JSON works too. Max payload 64 KB.

https://api.kumabot.xyz/api/webhook/<token>
Generic payload: { "title": "...", "description": "...", "url": "..." }
!help

Show every command you have access to, context-aware based on your permissions.

!help [command]
!prefixOwnerConfigurable

Change the bot's command prefix for this server.

!prefix <new_prefix>
e.g. !prefix ?
!dashboardOwner

Get a secure one-time login link to the web dashboard. Posted in the channel.

!dashboard
!setupModerator

A friendly setup check: shows which modules are on, whether Kuma has the permissions it needs, which log channels are configured, and what's left to do.

!setup
e.g. !setup
!togglePermittedToggleableConfigurable

Master switch for every feature module, automod, antiraid, welcome, leveling, economy, games, and more.

!toggle <module> on | off
e.g. !toggle economy off
!getstartedPermitted

Get a private link to the guided setup wizard for your server.

!getstarted
!reportsModerator

Staff report queue. !reports lists every active report (like cases, each with an ID). Accept actions it and sends the reporter a confirmation that staff acted (without revealing the specific action); reject closes it silently. When a user is reported, Kuma also scans that user's own profile (username, display name, status) against your content filters, and any hit (slur, scam link, etc.) is flagged on the report so staff have instant context. !reports autoaction on|off (owner) additionally auto-timeouts a reported user for 1h and logs a case when their profile trips a tier-2/3 filter; off by default, and flagging happens either way (needs the Content Filter module on).

!reports · !report accept <id> · !report reject <id> · !reports autoaction on|off
e.g. !report accept 12
!snapshotsOwnerConfigurable

Chat Snapshots (on by default). When a report is filed or a punishment happens (manual or automatic), Kuma captures the last 30 messages in that channel so staff can review the full context on the dashboard, with the offending message highlighted and a 'X min before' label. Timestamps show in each viewer's local timezone. Snapshots auto-delete after 60 days. Turn the whole thing off with !snapshots off.

!snapshots on | off
e.g. !snapshots off
!warnModerator

Warn a member. Warnings stack, auto-mutes once the threshold is hit.

!warn <@user> [reason]
e.g. !warn @spammer Posting invites
!warningsModerator

View a member's active warnings.

!warnings <@user>
!clearwarningsModerator

Clear all warnings for a member.

!clearwarnings <@user>
!clearwarningModerator

Remove a single warning by its number (see the numbers with !warnings).

!clearwarning <@user> <#>
e.g. !clearwarning @user 137
!muteModerator

Timeout a member. Duration accepts e.g. 10m, 1h, 7d.

!mute <@user> <duration> [reason]
e.g. !mute @noisy 1h Spamming
!unmuteModerator

Remove an active timeout from a member.

!unmute <@user>
!kickModerator

Kick a member from the server.

!kick <@user> [reason]
!banModerator

Ban a member from the server.

!ban <@user> [reason]
!tempbanModerator

Ban a member for a set time, Kuma automatically unbans them when it expires.

!tempban <@user> <duration> [reason]
e.g. !tempban @user 7d spamming
!noteModerator

Add a private staff note to a member's record. Notes are mod-only and never shown to the member.

!note <@user> <text> | remove <id>
e.g. !note @user keeps starting drama
!notesModerator

View a member's staff notes.

!notes <@user>
!unbanModerator

Unban a previously banned member.

!unban <user_id>
!softbanModerator

Ban then immediately unban a user, a harsh kick that leaves a case record.

!softban <@user> [reason]
!purgeModerator

Bulk delete recent messages in the channel. Purged messages are saved as a transcript to the message-log channel.

!purge <1-100>
e.g. !purge 50
!nick

Set a nickname, your own (anyone) or someone else's (mod only). Use `clear` to remove a nickname. Kuma needs Manage Nicknames and must outrank the target.

!nick [@user] <nickname> | !nick clear [@user]
e.g. !nick @user Helpful Henry
!lockModerator

Lock the current channel so members cannot send messages.

!lock [reason]
!unlockModerator

Unlock a previously locked channel.

!unlock [#channel]
!panicModeratorToggleable

Emergency lockdown, locks every channel. `off` unlocks everything and restores raid protections.

!panic on | off
!debugModerator

Generate a diagnostic report of your server's setup (permissions, channels, modules, recent errors) and get a code to share with support. No message content is collected. Two-step confirm; rate-limited.

!debug
e.g. !debug → !debug confirm
!thresholdModeratorConfigurable

Set how many warnings trigger an auto-mute. Default is 3.

!threshold <number>
e.g. !threshold 5
!mutedurationModeratorConfigurable

Set how long the auto-mute lasts. Default is 30m. Accepts s/m/h/d.

!muteduration <duration>
e.g. !muteduration 2h
!guildModerator

Reply to a message to find out who is really behind it. On a proxied Tupper it names the account behind the persona; on a message relayed from a bridged community it names the platform, server and author, so staff can trace a troublemaker back to their home server. Moderator only, a persona's owner isn't something to expose to everyone. Discord staff have the same thing as the 'Identify Origin' right-click command.

!guild (as a reply)
e.g. !guild
!case

Appeal a moderation action against you, or check the status of your case.

!case appeal <id> <reason> | status [id]
!case activeModerator

List all currently active (unresolved) cases.

!case active
!case appeal

Appeal your own case. A moderator will review it. Logged to the mod channel automatically.

!case appeal <id> <reason>
e.g. !case appeal 12 I was joking with a friend
!case appealsModerator

List all pending appeals waiting for review.

!case appeals
!case appeals on|offModeratorConfigurable

Allow or block in-server appeals. When off, members are pointed to the web appeal form instead and Kuma's punishment messages link there. Web appeals always keep working.

!case appeals on | off
e.g. !case appeals off
!case editModerator

Edit the reason on an existing case. Logged to the punishment channel.

!case edit <id> <new_reason>
e.g. !case edit 12 Updated: repeated harassment
!case modModerator

View a moderator's recent moderation actions, see what they've warned, muted, banned.

!case mod <@moderator>
e.g. !case mod @aki
!case recentModerator

View the most recent moderation cases.

!case recent [limit]
!case rejectModerator

Deny a pending appeal. The member is notified in the notification channel.

!case reject <id> [reason]
e.g. !case reject 12 Insufficient evidence
!case resolveModerator

Accept an appeal and resolve the case. Removes active punishments (unbans, unmutes).

!case resolve <id>
!case revokeModerator

Revoke the punishment (unban/unmute) and resolve the case. The member is notified.

!case revoke <id>
!case searchModerator

Search all cases for a specific user.

!case search <@user>
!case status

Check the status of your own cases. See if your appeal is pending, accepted, or denied.

!case status [id]
e.g. !case status 12
!case viewModerator

View full details of a moderation case.

!case view <id>
!policyPermittedConfigurable

How warnings escalate. By default a member is muted once they reach the warn threshold and it stops there. Set a ladder to carry on past it, for example mute at 3, kick at 5, ban at 7. Use 0 to switch a step off, and each enabled step has to be higher than the one before it or it could never be reached. Warnings are cleared when someone is kicked or banned, so the ladder starts again if they return. Brand-new accounts follow the tighter anti-raid ladder instead, which this does not change.

!policy show · !policy set <mute> <kick> <ban> · !policy reset
e.g. !policy set 3 5 7
!exemptPermitted

Take a channel out of AutoMod, or out of the content filter's nuisance checks. Two separate lists, because they are different questions. AutoMod covers flood, spam, invite links, mass mentions and blacklisted words, which a memes or bot-commands channel often wants quiet. The filter exemption covers only Tier 1: excessive caps, link spam and repeated messages. Slurs, harassment, phishing and scams are never exempt anywhere, in any channel, and there is no setting that changes that. Run it in a channel to exempt that one, or name another.

!exempt automod #channel · !exempt filter #channel · !exempt remove automod|filter #channel · !exempt list · !exempt clear automod|filter
e.g. !exempt automod #memes
!raidModerator

Raid tools. `cleanup` previews everyone who joined since the raid began (or the last N minutes). On `cleanup confirm`, it bans them all and clears their recent messages, while skipping the owner, mods and Kuma. `waitlist` (on by default) briefly holds new joiners during a raid with a timeout and friendly DM. When it clears, they are let back in one at a time (not all at once) so raiders get caught. Review with `waitlist list`, or let everyone in early with `waitlist admit all`. `mode` picks the response to a join-based raid: lockdown locks every channel (default), or soft holds new joiners on the waitlist and keeps the server open (requires Timeout Members).

!raid cleanup [minutes] | !raid waitlist on|off|list|admit | !raid mode lockdown|soft
e.g. !raid waitlist list → !raid cleanup
!raidguardModeratorToggleableConfigurable

Cross-server Anti-Raid protection (Discord and Fluxer). Automatically isolates or kicks accounts that have been auto-flagged for raid/spam activity in other Kuma-protected communities. Use `unblock` to manually lift isolation. Not available on Stoat: Stoat's rules don't allow sharing raid flags between communities, so Stoat servers rely on their own local raid protection (!antiraid, !raid), and `!raidguard unblock` stays only to lift older isolations.

!raidguard [on|off] | !raidguard action <mute|kick|alert_only> | !raidguard unblock <@user>
e.g. !raidguard on → !raidguard action mute
!blacklistModeratorToggleable

Manage the AutoMod word blacklist for this server.

!blacklist add|remove|list <word>
!blacklist addModeratorConfigurable

Add a word or phrase to the blacklist.

!blacklist add <word>
!blacklist clearModeratorConfigurable

Clear the entire blacklist.

!blacklist clear
!blacklist listModerator

Show every blacklisted word currently active.

!blacklist list
!blacklist removeModeratorConfigurable

Remove a word or phrase from the blacklist.

!blacklist remove <word>
!modexemptOwnerConfigurable

Staff filter bypass. When on, moderators and the server owner skip ALL AutoMod and Content Filter checks, flood/spam, invites, mass-mention, the blacklist, and even slurs, phishing and NSFW. Off by default; enable only if you fully trust your staff. Also toggleable on the dashboard.

!modexempt on | off | status
e.g. !modexempt on
!automodOwnerConfigurable

AutoMod controls, including 'new-only' spam screening. With !automod newonly on, only new accounts (younger than the cutoff) that haven't verified are screened for nuisance spam like flood, repeated characters, emoji walls, caps, and link spam, so established and verified members never get false-flagged, while fresh burner accounts are still shut down instantly. Account age is read locally from the ID (no API calls), so it's free. The serious stuff (slurs, scams, phishing, NSFW, unauthorized invites, and mass-mention raids) always applies to everyone. Off by default; !automod spamage <hours> sets the cutoff (default 24). !automod action sets what each rule DOES when it fires, separately from whether it runs: every rule removes the message, and the action decides what happens to the member afterwards - delete only (nothing recorded, counts toward no escalation), warn (a record that feeds your escalation ladder), or mute, kick or ban straight away without waiting for the ladder. Run !automod action on its own to see every rule and its current setting.

!automod on | off | action <rule> <delete|warn|mute|kick|ban> | newonly on|off | spamage <hours> | status
e.g. !automod action invite mute
!antiraidPermittedToggleable

Toggle the anti-raid system (on by default). Kuma uses layered detection and risk scoring to spot a raid forming, then locks the server down automatically, mutes the burst, and holds suspicious joins before things escalate. Tune the auto-lock join-velocity trigger with !antiraid trigger <joins> <seconds> (e.g. 15 10 for a large server) so a busy server or a platform-wide join surge doesn't cause false lockdowns; !antiraid trigger reset restores the default. The other triggers stay under wraps so they can't be gamed.

!antiraid on | off | status | trigger <joins> <seconds>
!newaccountPermittedConfigurable

How AutoMod treats young accounts that act like raiders: a tighter strike ladder (default 2), then the chosen action (default kick, a kicked account that returns and reoffends is auto-banned). Link spam & phishing remove a new account on sight, and `nameban` auto-bans new accounts whose name closely matches someone banned in the last few hours. Part of anti-raid. !newaccount evasion on turns on ban-evasion alerts: when someone joins who resembles a member banned here in the last 30 days, your mod log gets a heads-up naming what matched. Kuma never acts on it, because nothing on Stoat can actually prove two accounts are the same person, so the decision stays with your staff.

!newaccount action <ban|kick|mute|off> | strikes <1-5> | nameban <on|off> | days <n> · !newaccount evasion on|off
e.g. !newaccount action kick
!agegatePermittedToggleableConfigurable

Act on accounts younger than a threshold when they join, flag them, apply a quarantine role, or kick them. A strong filter against throwaway alts.

!agegate action <log|role|kick|off> | days <n> | role <@role>
e.g. !agegate action kick
!emojiguardPermittedConfigurable

Holds custom emoji back from members who have only just joined. Custom emoji render as arbitrary uploaded images, so on a server that has restricted image posting they are still a way to put pictures into a channel, and they are the usual route people use for gore and NSFW. With this on, a message containing a custom emoji from someone inside the window (default 30 minutes after joining, 5-360) is deleted and they get a friendly note saying when they can use them. What counts depends on the platform: where there is a per-role "use external emoji" permission, only EXTERNAL emoji are held, so a new member can still use the server's own set. Where there is no such permission, every custom emoji counts, because there is no way to tell the server's own emoji from imported ones. It never mutes or bans by itself: the early removals cost nothing but the message, and after the strike limit (default 3) it records a normal AutoMod warning and lets your existing warning threshold decide. Moderators are skipped. Being verified is deliberately not an exemption, since a low-risk joiner is auto-verified within seconds of arriving. Off by default.

!emojiguard on | off | window <minutes> | strikes <n> | status
e.g. !emojiguard on
!contentfilterPermittedToggleableConfigurable

Toggle entire tiers or individual rules (caps, link spam, repeats, discriminatory language, toxicity, phishing, IP loggers, scam TLDs, and image content scanning for gore/NSFW on Discord & Fluxer only, not available on Stoat). Use `test <image-url>` to check the gore scanner without posting anything graphic (Discord & Fluxer).

!contentfilter tier <1|2|3> on|off | rule <key> on|off | status | test <image-url>
e.g. !contentfilter rule cf_caps off
!combofilterPermittedConfigurable

Threshold-based keyword filters: a filter only trips when a message contains N or more of its watch-words, so it catches coded or spread-out phrases without false-flagging a single word. Set the words, the threshold, and the action (delete/warn/mute/etc.).

!combofilter create|delete|list|view|enable|disable|threshold|action|words
e.g. !combofilter create scam-combo
!verifyPermittedToggleableConfigurable

Reaction-based verification gate. Members react to get the verified role. Add your own text right after the role at setup, or change it later with `message`. By default Kuma appends a “React with [emoji] to verify…” line at the bottom; to write your own closing line instead, include your reaction emoji somewhere in your message and Kuma posts it exactly as written.

!verify setup <#channel> [emoji] <@role> [message…] | message <text> | off | status
e.g. !verify setup #verify ✅ @Member Welcome traveler, react below to get in!
!autoverifyOwnerConfigurable

A safety net for servers that haven't set up full verification. When on, Kuma quietly holds only the riskiest new joins (a brand-new account PLUS at least one other red flag, such as a generic profile with no avatar/name/status, joining right after a ban here, or name/raid flags) with a short timeout and a DM'd link to the human check (on Stoat, Kuma's own puzzle and picture, with no connection checks). Passing the link lifts the hold instantly; otherwise it auto-clears after a few hours, so a false positive just waits a little. Deliberately a high bar, so being new alone never trips it and most members pass straight through. Opt-in (off by default); tune with sensitivity low|normal|high. If you turn on full verification with !verification, that takes over and this steps aside.

!autoverify on | off | sensitivity low|normal|high | status
e.g. !autoverify on
!verificationOwnerConfigurable

One guided front door for verification. Run !verification with no arguments and Kuma explains the options. Basic is a channel members react in to get in (light, friendly, stops bots), set up with !verification basic <@role> <#channel>. Smart is a web check with risk scoring and a staff queue for suspicious joins, set up with !verification smart <@role>; on Discord and Fluxer it's a Cloudflare captcha with optional anti-VPN, and on Stoat it's Kuma's own puzzle and picture check with no IP checks at all. In Smart mode, !verification post <#channel> drops a persistent 'react to verify' button so there's a visible in-channel entry point even if DMs are closed. Stoat servers get three more modes that run entirely inside the chat: Probation (!verification probation [@role]) needs no setup: for their first minutes newcomers can chat, but Kuma removes links, files, pings and fast messages, and brand-new accounts also get a picture check (tune how long it lasts, the slowmode, and which of links, images and pings are paused with probation minutes|slowmode|block|allow|young|check, or from the dashboard). Picture check (!verification picture <@role>) DMs a drawn picture answered with one reaction. Rules quiz (!verification quiz <@role>) DMs your own multiple-choice questions, written with !verification quiz add Question | right answer | wrong answer. Every picture and quiz check also offers a fresh one or a staff member checking them in by hand, and !verification channel <#ch> sets where checks go if a member's DMs are shut. Switching away from Basic removes its old gate message (it would otherwise keep handing out the same role to anyone who reacts). Members can run !verification to (re)start whichever gate is active.

!verification (guided) | basic <@role> <#channel> | smart <@role> | post <#channel> | off | status · Stoat: probation [@role] | probation minutes|slowmode|young <n> | probation block|allow links|files|pings | picture <@role> | quiz <@role> | quiz add|list|remove|count | channel <#ch>
e.g. !verification probation → !verification picture @Verified
!webverifyOwnerConfigurable

Web-page verification gate with smart risk routing. New members are scored on low-privacy signals (account age, avatar, name/raid flags, prior cases): low-risk are let straight in, medium-risk are DM'd a link to the check on kumabot.xyz/verify (a Cloudflare captcha on Discord and Fluxer; on Stoat, a short puzzle the browser solves plus a drawn picture, with nothing about the visitor's connection read or kept), and high-risk are held in a staff review queue (see them with !webverify pending or the dashboard's Verification Queue, then approve/deny). Sensitivity auto-tightens during elevated activity and just after a raid, then relaxes on its own. On Discord and Fluxer, with 'ip on' (default) a captcha-passer's connection is screened for VPN/proxy or high-risk IPs (via proxycheck.io) and same-network accounts are linked on the Member Dossier, using only a one-way, per-server IP hash (never the raw address) that is auto-deleted after 30 days; VPN/high-risk joins are held for staff. Stoat servers never get this: no IP, VPN or alt-linking checks, and any old IP hashes were deleted. Prefer one dial? '!webverify level 0-4' picks a preset posture (1 Relaxed, 2 Balanced (recommended), 3 Strict, 4 Lockdown) bundling smart routing, sensitivity, anti-VPN (never on Stoat) and min account age; the Stoat page also gets a harder puzzle during a raid; your role/channel config is left untouched. Turn smart routing off to send the captcha to everyone. Optionally require a minimum account age. A declined member can appeal once with !webverify appeal <reason>, which puts them back in the queue. Members can run !webverify to re-send their own link. (Set channel permissions so unverified members can't access the server until they have the role.)

!webverify setup <@role> | level 0-4 | off | smart on|off | sensitivity low|normal|high | ip on|off (not on Stoat) | pending | approve <id> | deny <id> | channel <#ch> | agedays <n> | status
e.g. !webverify setup @Verified
!temprolePermitted

Grant a role for a limited time, then remove it automatically. Owner-only by default, delegate to mods with `!perms grant temprole`.

!temprole <@user> <@role> <duration>
e.g. !temprole @new 1234567890 7d
!permsOwnerConfigurable

Delegate owner-level commands to moderators. Grant or revoke access per command.

!perms grant | revoke | list | reset
e.g. !perms grant webhook
!modOwner

Manage who counts as a Kuma moderator (server owner only).

!mod add|remove <user> | list
!mod addOwnerConfigurable

Give a trusted member moderator permissions for Kuma's commands.

!mod add <@user>
!mod listOwner

Show every registered moderator role.

!mod list
!mod removeOwnerConfigurable

Remove a member's moderator permissions.

!mod remove <@user>
!autorolePermittedToggleableConfigurable

The roles every new member is given when they join, up to 10 of them. Add and remove them one at a time, and !autorole list shows what is configured along with whether Kuma can actually assign each one. Each role is assigned independently, so one that sits too high in the hierarchy will not stop the others being given. Also editable on the dashboard.

!autorole add <@role> · !autorole remove <@role> · !autorole list · !autorole clear
!levelrolesPermittedConfigurable

Auto-assign roles when members hit specific XP levels. Use `stack on|off` to keep every earned role or only the highest.

!levelroles add | remove | list | stack
e.g. !levelroles stack off
!reactionrolePermitted

Hand out roles when members react to a message. Works with both standard emojis and your server's custom emojis. Kuma adds the reaction for you, and you can mention the role or type its name instead of using an ID.

!reactionrole add <msg_id> <emoji> <@role>
!rolemenuPermitted

Post a single self-assign role menu with several emoji → role options at once. Kuma adds all the reactions for you. In the dashboard you can also give the menu its own title and intro, add a short description under each role, switch on pick-one mode (choosing a role swaps out the others, great for colours or pronouns), and edit a menu after it's posted.

!rolemenu [#channel] <emoji> <@role> [<emoji> <@role> …]
e.g. !rolemenu 🎮 @Gamer 🎨 @Artist 🎵 @Musician
!rolePermittedConfigurable

Add or remove roles from a user.

!role add | remove <@user> <role>
e.g. !role add @aki 1234567890
!rolecolourPermittedConfigurable

Change a role's colour. Supports hex, 25+ named colours, and gradients (red:blue). Also works as !rolecolor.

!rolecolour <@role> <colour>
e.g. !rolecolour 01ABC sakura:purple
!setnotificationModeratorConfigurable

Choose how Kuma notifies members about punishments, directly via DM (default on), in a read-only notification channel, or both. The channel is automatically locked when set.

!setnotification dm on|off | set <#channel> | view | clear
e.g. !setnotification dm on
!logmediaOwnerConfigurable

Toggle whether deleted and edited message logs include image links and attachment details. On by default, turn off during raids to keep logs clean.

!logmedia on | off | status
e.g. !logmedia off
!loggingPermittedConfigurable

Choose which kinds of event Kuma writes to your log channels: message edits and deletions, ghost pings, joins and leaves, nickname and role changes, voice activity, permission changes, invites, webhooks, threads, pins, and the platform's own AutoMod. Everything that was already being logged stays on by default; voice activity starts off because it is by far the highest volume. Only the categories your platform can actually produce are offered — Stoat has no voice, thread, pin, invite or webhook events and no platform AutoMod, so it shows a shorter list. `!setlog` still controls where each log goes. Also on the dashboard under Moderation → Logging, alongside the log channels themselves.

!logging · !logging <category> on|off · !logging all on|off
e.g. !logging voice on
!setlogPermittedConfigurable

Set where Kuma records moderation, message, and server-audit logs. By default all logs show members as clickable profiles (no ping, like Stoat's AutoMod); `!setlog style embed` switches to name + ID instead.

!setlog moderation|messages|server <#channel> · !setlog style embed|mention
!setlog messagesPermittedConfigurable

Set the channel for message edits, deletions, and ghost pings.

!setlog messages <#channel>
!setlog moderationPermittedConfigurable

Set the channel for warns, mutes, kicks, bans, softbans, raids, locks, appeals, and AutoMod.

!setlog moderation <#channel>
!setlog offOwnerToggleable

Disable a log type (punishments, messages, or server).

!setlog <type> off
!setlog serverPermittedConfigurable

Set the channel for channel/role/permission/member join audit events.

!setlog server <#channel>
!pollModerator

Create a reaction poll. Up to 10 options.

!poll "Question" "A" "B" ...
e.g. !poll "Movie night?" "Yes" "No"
!birthdayConfigurable

Save your birthday (e.g. 'March 5' or '5/3') for a shout-out on the day. Owners set it up with !birthday channel <#ch>, and optionally !birthday role <@role> and !birthday coins <amount>.

!birthday set <date> | remove | list
e.g. !birthday set March 5
!qotdPermittedConfigurable

Question of the Day: Kuma posts a conversation starter to a channel each day. 365+ built-in questions plus any you add with !qotd add. Preview one with !qotd now.

!qotd channel <#ch> | on | off | add <question> | now
!recapPermittedConfigurable

A weekly recap posted every Monday: total messages, new members, the week's top chatters, and any birthdays coming up. Preview it any time with !recap now.

!recap channel <#ch> | on | off | now
!roleplayPermittedConfigurable

Turn individual reaction GIF commands on or off for your server (e.g. !roleplay disable slap). Use !roleplay list to see which are off. To disable the whole set at once, use !toggle roleplay off instead.

!roleplay disable <name> | enable <name> | list
e.g. !roleplay disable slap
!embedModerator

Send a clean embed to a channel.

!embed <#channel> <title> | <desc> | <colour>
e.g. !embed #rules Welcome | Read the rules | pink
!customcmdModeratorConfigurable

Manage server-specific custom text commands.

!customcmd add | remove | list
e.g. !customcmd add hello Hi there!
!giveawayModeratorToggleableConfigurable

Start, end early, reroll, or list giveaways with duration, winners, and prize.

!giveaway start | end | reroll | list
e.g. !giveaway start 1h 1 Nitro
!welcomePermittedToggleableConfigurable

Configure welcome messages for new members, set the message (use {member} to mention them), the channel, and an optional GIF or image shown on join. A direct .gif link embeds inline.

!welcome set | channel | gif | test | off
e.g. !welcome gif https://media.tenor.com/abc/welcome.gif
!keywordPermittedToggleable

Watch for words/phrases, alert your mods or auto-reply with a set message.

!keyword add|remove|list ...
!keyword addModeratorToggleableConfigurable

Add a keyword to monitor. Starts in alert mode (pings mods + owner when detected).

!keyword add <word or phrase>
e.g. !keyword add free nitro
!keyword channelModeratorConfigurable

Set the channel where keyword alerts and staff notifications are sent.

!keyword channel <#channel|here|clear>
e.g. !keyword channel #staff-alerts
!keyword listModerator

Show all configured keywords with their mode (alert or respond).

!keyword list
!keyword removeModeratorConfigurable

Remove a keyword from the alert list.

!keyword remove <word or phrase>
!keyword replyModeratorConfigurable

Set an auto-reply for a keyword (respond mode) or clear it to switch back to alert mode.

!keyword reply <keyword> <text|clear>
e.g. !keyword reply help Please check #support!
!welcomecardPermittedConfigurable

An image welcome card posted when someone joins, showing their avatar and name. Five designs to start from (Sakura, Midnight, Minimal, Aurora, Sunset), eight bundled fonts, circular or rounded-square avatar frames, and your own accent colour. Titles and subtitles support {user} and {server}, and a long title shrinks to fit before it is ever cut short. !welcomecard preview renders it immediately, even while the card is switched off, so you can see it before enabling it. Off by default; your existing welcome message still posts alongside the card, and a welcome GIF steps aside while the card is on so you don't get two images. It never blocks a welcome: if the card can't be rendered for any reason, the normal text welcome still goes out. Skipped automatically during a raid. For full control over layer positions, backgrounds and uploaded images, use the visual builder in the dashboard's Welcome tab. Works on Stoat, Discord and Fluxer.

!welcomecard preview | on | off | preset <name> | font <name> | frame <circle|square> | accent <#hex> | title <text> | subtitle <text> | reset
e.g. !welcomecard preview
!announcePermittedConfigurable

Schedule a recurring announcement, Kuma reposts your message on the interval you set (rules reminders, events, etc.).

!announce add <#channel> <every> <message> | list | remove <id>
e.g. !announce add #general 24h Remember to read the rules!
!suggestchannelPermittedConfigurable

Set the channel where suggestions from !suggest are posted.

!suggestchannel <#channel>
!reviverPermittedConfigurable

Ping a role with an icebreaker question when a channel goes inactive for X minutes. !reviver questions lets you write the icebreakers yourself, so the reviver can run in your community's language or stick to its topics. Your own questions replace Kuma's built-in ones; add several at once by putting each on its own line or separating them with |, and !reviver questions reset restores the defaults.

!reviver set <#channel> <@role> [minutes] | remove | list | questions
e.g. !reviver questions add ¿Cuál es tu anime favorito?
!starboardPermittedToggleableConfigurable

Highlight popular messages. When a message gets enough ⭐ (or your chosen emoji) reactions, it's reposted to a highlights channel with a live count. In a bridged channel the stars people leave on any linked server add up towards the one threshold, and the highlight lands on each server's own starboard with a Jump to message link that opens the copy in that server.

!starboard channel <#channel> | emoji <emoji> | threshold <n> | off
e.g. !starboard channel #highlights
!manage

Your own settings, not the server's. Choose whether Kuma DMs you about level-ups, badges and moderation, and pick your rank card theme. Settings apply to the server you run it in; add `global` to change your default everywhere. Server staff can't see or change them. Kuma also DMs you a link to the full settings page, where you can edit your profile, review your linked accounts and manage your privacy.

!manage · !manage <setting> on|off · !manage <setting> on|off global · !manage theme <name>
e.g. !manage levelup off global
!whoami

Show your own user ID on the platform you're using. IDs differ between Stoat, Discord and Fluxer, so this is the quickest way to get the right one when a command or the website asks for it.

!whoami
!apply

Start an application if the server has one open. Kuma DMs you a private, short-lived link to fill it in on the web; the link is tied to you and that server, so your submission is provably yours.

!apply
!serverinfo

Show server details, name, owner, channels, roles, members, and creation date.

!serverinfo
!userinfo

Show info about yourself or another member, nickname, roles, join date, account age.

!userinfo [@user]
e.g. !userinfo @aki
!afk

Mark yourself as AFK. Anyone who mentions you gets notified. Auto-clears when you speak.

!afk [reason]
e.g. !afk grabbing lunch
!remind

Set a personal reminder. Supports compound times like 1h30m. Up to 15 active (set several at once), 7 days max.

!remind <time> <message>
e.g. !remind 2h check the oven
!timer

Set a channel countdown that pings here when it's up, survives restarts. Compound times like 1h30m, 30s to 30d, up to 5 each running at once. Use `!timer list` and `!timer cancel <id>` to manage them.

!timer <duration> [label]
e.g. !timer 10m Tea break
!suggest

Submit a suggestion to the server's suggestion channel.

!suggest <idea>
e.g. !suggest add a music channel
!report

Report a user or issue to staff, privately. Your command message is deleted instantly (so there's never a public callout) and you get a DM confirmation. The report lands in a staff queue rather than being posted in the channel. Staff triage it with !reports, then !report accept <id> (which DMs you a thank-you that action was taken) or !report reject <id>.

!report [@user] <reason>
e.g. !report @spammer Sending scam links in DMs
!staff

Ping all staff when something needs attention. 60s cooldown per channel.

!staff [reason]
e.g. !staff suspicious DM spam
!ticket

Open a private support ticket, close one, or list active tickets (list is mod only). `panel` posts a message members react to in order to open a ticket. `staffrole <@role>` grants a whole role access to every ticket, and members with that role can close tickets too, without needing full moderator powers. It sets a channel permission instead of editing members, so it works even for staff who outrank the bot.

!ticket open | close | list | panel <#channel> [emoji] | staffrole <@role>
e.g. !ticket staffrole @Staff
!profile

Show a member's profile card image: avatar, level and XP progress, coins, daily streak, rank, earned badges, and a custom bio. Set yours with !bio and !pronouns.

!profile [@user]
e.g. !profile
!badges

See earned badges, or the full list of achievements and how to unlock them. Badges are earned for leveling up, holding coins, keeping daily streaks, and more.

!badges [@user] · !achievements
!bio

Customise your profile card. Use 'clear' to remove either one.

!bio <text> · !pronouns <text>
e.g. !bio Just here for the anime nights
!tupper

Create and manage proxy personas (Tuppers), posting under a custom name and avatar. A proxy can be a prefix (p:text), a suffix (text -Nia) or brackets ([text]), write 'text' where your message goes. Attach an image when registering to use it as the persona's avatar. Already using Tupperbox, PluralKit or Titan? Run !tupper import with your export file attached and your personas, proxies and avatars come across in one go; re-importing won't duplicate anything. !tupper export sends the same thing back the other way: Kuma DMs you a file of your personas that it can read back in, so you can move them between servers, keep a copy, or take them somewhere else. !tupper sign adds a tag after a persona's name, so a persona called Nia with the signature :: they/them speaks as 'Nia :: they/them'; it travels across the bridge with them, and where a platform gives less room for a name than Kuma does the signature is dropped rather than the name being cut short. !tupper colour sets the colour that name is shown in, which works on Stoat - Discord and Fluxer proxy through webhooks, which have a username and an avatar and nowhere to put a colour, so it is kept but not shown there. Personas are tied to you rather than to one server, so they follow you into every server that has the system enabled, and they carry their name and avatar across the bridge to Discord and Fluxer. Tired of typing the tag every time? !tupper auto <name> proxies your untagged messages as one persona, or !tupper auto latch follows whoever you last used a tag for. It's off by default and set per server, so switching it on for a roleplay server doesn't follow you into one where you just chat; a latch goes stale after six hours, an explicit tag always wins, and starting a message with a backslash sends that one as yourself. An owner switches the system on for a server with !tupper enable; everything else is open to any member.

!tupper register <proxy> <name> [avatar_url] | import | export | colour <proxy or name> <#rrggbb> | sign <proxy or name> <signature> | list | remove <proxy or name> | auto <name|latch|off> | enable | disable
e.g. !tupper register [text] Pikachu
!supporter

Check whether your account carries the Kuma Supporter badge, the one that shows beside your name on your profile card. It is bot-wide rather than per-server, so it follows you into every server Kuma is in, and across Stoat, Discord and Fluxer if you have linked your accounts. Supporters are added by the Kuma team.

!supporter · !supporter status
!achievements

The full badge list: what each one is for, and which you've earned. !badges shows just yours.

!achievements
e.g. !achievements
!pronouns

Set the pronouns shown on your profile card. Free text rather than a fixed list, so write them however you write them. Run it with nothing to clear them.

!pronouns <text>
e.g. !pronouns they/them
!rank

Show your (or someone else's) level, XP and leaderboard position as a rank card image, with a progress bar to the next level.

!rank [@user]
!leaderboard

Show the top XP rankings for the server.

!leaderboard
!xpblacklistPermittedConfigurable

Manage channels where XP is not earned.

!xpblacklist add | remove | list <#channel>
!xpboostPermittedConfigurable

Run a temporary XP-boost event, everyone earns multiplied XP for a while. Great for weekends or events. Stacks with members' own boosts from `!daily` streaks, up to 10x in total.

!xpboost <multiplier> <duration> | off | status
e.g. !xpboost 2x 1h
!xpboost list

See the personal 2x XP boosts you've earned from your `!daily` streak, the one running right now, and when your next one lands. Plain `!xpboost` shows the same thing.

!xpboost list
!xpboost use

Turn on one of your saved XP boosts: 2x XP for you only. With no number it uses your shortest one. One at a time: after a boost ends, your boosts rest for as long as it lasted (use a 6-hour one at noon and your next is usable from midnight). On Discord: `/daily action:Use an XP boost`.

!xpboost use [number | length]
e.g. !xpboost use 2
!xpratePermittedConfigurable

Set how fast members earn XP: pick a Slow/Normal/Fast preset, or fine-tune the per-message XP range and the cooldown between grants. The level curve stays fixed, so changing rates never re-levels existing members. `!xprate status` shows the current rates and roughly how many messages each level takes.

!xprate preset slow|normal|fast | permessage <min> <max> | cooldown <seconds> | status
e.g. !xprate preset fast
!daily

Claim your daily coins (base 100-300). Claiming on consecutive days builds a streak for a growing bonus, plus milestone rewards at 7, 14, 30, 60, 100 and 365 days. Streaks also earn personal 2x XP boosts: 15 min at 3 days, 30 min at 7, 1 hour at 14, 2 hours at 30 and 60, 3 hours at 100, 6 hours at 365, and 10 min every other 5th day. They're saved until you use them with `!xpboost use`. Streaks from before boosts existed get the milestone boosts they'd already passed on their first claim. Miss a day and the streak resets.

!daily
!streak

Check your (or someone's) current and best daily-claim streak.

!streak [@user]
!shopPermittedConfigurable

Browse the coin shop, or (owners) add/remove items that grant a role for a price.

!shop | add <price> <@role> <name> | remove <id>
e.g. !shop add 500 @VIP VIP Role
!buy

Buy a shop item with your coins, the role is granted instantly.

!buy <id or name>
e.g. !buy VIP
!bal

Check your (or someone else's) coin balance.

!bal [@user]
!gift

Gift coins to another member.

!gift @user <amount>
e.g. !gift @aki 500
!coinlb

Show the richest members in the server.

!coinlb
!coinsModeratorConfigurable

Manage a user's coin balance. Give, take, set, or check coins.

!coins give|take|set|check @user <amount>
e.g. !coins give @aki 500
!slots

Spin the slot machine. Match symbols to win big.

!slots <bet>
e.g. !slots 50
!dice

Roll dice against the house and bet your coins.

!dice <bet>
e.g. !dice 100
!roulette

Russian Roulette: 5 loaded chambers, 1 empty. A 1-in-6 chance to survive and win 5.5x your bet, otherwise you lose it. High risk, high reward.

!roulette <bet>
e.g. !roulette 100
!highlow

Guess if the next card is higher or lower. Rarer guesses pay bigger multipliers and correct guesses compound, but ties go to the house. Use !hi, !lo, and !cash to cash out.

!highlow <bet>
e.g. !highlow 25
!duel

Challenge another player to a coin duel. They accept with !accept.

!duel @user <bet>
e.g. !duel @aki 100
!petToggleableConfigurable

One pet the whole server looks after together. !pet checks on them: their needs, their level, and who has been caring for them. Feeding, playing and grooming each top up a different need, and all three decay with time, so a pet left alone gets unhappy. Pick a species when you adopt (bear, cat, dog, rabbit, fox, penguin, otter, frog, hamster or duck) or leave it off for a random one. There is one pet per channel and everyone shares it; adopt in a bridged channel and every linked server looks after the same pet. Each person can do each care action once every four hours, so it takes the whole server rather than one dedicated member. Owners get a Server Pet panel on the dashboard to rename or release one. Off by default: turn it on with !toggle pets on.

!pet · !pet adopt <name> [species] · !pet feed · !pet play · !pet groom · !pet rename <name> · !pet release
e.g. !pet adopt Mochi
!rps

Challenge another member to Rock Paper Scissors, where both players type rock, paper, or scissors in chat. Add an amount to bet coins (needs the economy module), or leave it off for a friendly, no-stakes match.

!rps @user [amount]
e.g. !rps @friend 100
!coinflip

Bet coins on a coin flip. Needs the economy module.

!coinflip <amount> <heads|tails>
e.g. !coinflip 50 heads
!blackjack

Bet coins on a hand of blackjack (21). Use !hit and !stand during the game. Needs the economy module.

!blackjack <bet>
e.g. !blackjack 100
!trivia

Answer a random trivia question. First correct answer wins.

!trivia
!countingModeratorConfigurable

Set up a counting channel where members count upward together, one number per person, no repeats. Use 'set' for per-server counting, or 'bridge' for a shared count across all bridged servers.

!counting set <#channel> | !counting bridge <#channel> | off
e.g. !counting set #counting
!shiritoriModeratorConfigurable

Word Chain (Shiritori): set a channel where each new word must start with the last letter of the previous word, no repeats. A wrong word just gets a ❌; valid words keep the chain alive. Use 'set' for per-server chains, or 'bridge' for one shared chain across every bridged server, where a word played anywhere advances the same chain, ✅ and ❌ appear on every side, and !shiritori reset clears it for all of them. Toggle 'strict' mode to require real English words.

!shiritori set <#channel> | !shiritori bridge <#channel> | strict on|off | status | reset | off
e.g. !shiritori set #word-chain
!wordgenConfigurable

Timed Word Generator for creative writing that posts a set of random words and refreshes them on an interval to spark ideas (freewriting sprints, brainstorming, prompts). Easy uses common words; Think pulls wider, harder vocabulary. Runs 1 to 60 minutes. Pick a preset speed (slow/medium/fast = new words every 30s/20s/10s) or a fully custom refresh interval like 45s (5 to 300s), which is handy for longer sessions with bigger groups. No winners, it's a writing aid, not a competition.

!wordgen [minutes] [easy|think] [slow|medium|fast|45s] · !wordgen stop
e.g. !wordgen 5 think fast
!mafiaConfigurable

Social-deduction party game (3+ players). Open a lobby, players join, then secret roles (Mafia, Detective, Doctor, Villagers) are dealt by DM. Night actions happen in DMs; by day everyone votes to lynch a suspect. Town wins by eliminating all Mafia; Mafia win by reaching parity.

!mafia start | join | begin | vote <name> | status | cancel
e.g. !mafia start
!scramble

Unscramble the jumbled word. First to guess wins coins.

!scramble
!adventure

Kick off a server-wide choose-your-own-adventure with voting.

!adventure
!8ball

Ask the magic 8-ball a yes/no question and receive its wisdom.

!8ball <question>
e.g. !8ball will I pass my exam?
!hangman

Play hangman, guess the word one letter at a time before you run out of tries.

!hangman
!wordle

Guess the 5-letter word in 6 tries. Colour-coded feedback after each guess.

!wordle
!tictactoe

Play tic-tac-toe against another member on a 3x3 grid.

!tictactoe @user
e.g. !ttt @aki
!connect4

Play Connect 4, drop discs with !drop <column> to connect four in a row.

!connect4 @user
e.g. !c4 @aki
!chess

Play chess against another member, cross-platform. On Discord you pick moves from dropdown menus (piece, then destination); on any platform type !move e2e4 or standard notation like !move Nf3. Use !resign to give up.

!chess @user
e.g. !chess @aki
!mathquiz

Solve a quick math problem. First correct answer wins.

!mathquiz
!wyr

Would You Rather, choose between two options. In a bridged channel it runs as one shared round: the question posts on every side, votes from all platforms go into one tally, and a single result is announced everywhere.

!wyr
!letterboxd

Link your Letterboxd profile so others can find your films, or look up someone else's. Paste a username or a full profile link.

!letterboxd <username> · !letterboxd @user · !letterboxd follow <username>
e.g. !letterboxd davidfincher
!quote

Make it a quote. Reply to any message with !quote and Kuma turns it into a polished, poster-style image: the author's photo fading into a flat backdrop with their words set in an elegant serif and an italic credit. Pick a style with a leading keyword: classic (greyscale, the default), colour, sakura (pink credit), or light (paper). No reply? Use !quote @user <text> to attribute a line, or !quote <text> for yourself.

!quote [style] (as a reply) · !quote [style] @user <text>
e.g. !quote colour (replying to a message)
!anisearch

Look up any anime via AniList, synopsis, score, episode count, studio, genres, and airing status. Part of the toggleable Anime Lookup module.

!anisearch <title>
e.g. !anisearch Fruits Basket
!manga

Look up any manga via AniList, synopsis, score, chapters/volumes, genres, and status. Part of the Anime Lookup module.

!manga <title>
e.g. !manga Berserk
!character

Look up an anime/manga character via AniList, bio, age, and the series they appear in. Part of the Anime Lookup module.

!character <name>
e.g. !character Levi Ackerman
!trending

The anime trending right now on AniList. Part of the Anime Lookup module.

!trending
e.g. !trending
!seasonal

The most popular anime airing this season. Part of the Anime Lookup module.

!seasonal
e.g. !seasonal
!recommend

Get anime recommendations based on a show you like (AniList). Part of the Anime Lookup module.

!recommend <anime>
e.g. !recommend Death Note
!randomanime

A random anime to watch, optionally filtered by genre (e.g. Action, Romance, Slice of Life). Part of the Anime Lookup module.

!randomanime [genre]
e.g. !randomanime romance
!rollToggleable

Roll a random anime character and react 💖 to claim them to your collection. One owner per character per server, first to react wins. Part of the toggleable Gacha module.

!roll
e.g. !roll
!collection

View your claimed gacha characters, or someone else's (alias !harem). Part of the Gacha module.

!collection [@user]
e.g. !collection
!gachatop

Leaderboard of the server's top character collectors. Part of the Gacha module.

!gachatop
e.g. !gachatop
!view

Look up any anime character and see who owns them in this server (alias !whohas). Works for characters nobody has claimed yet, and matches part of a name. Part of the Gacha module.

!view <character name>
e.g. !view Levi
!trade

Propose swapping one of your claimed characters for one of another member's, they confirm with !trade accept. Part of the Gacha module.

!trade @user <yours> for <theirs>
e.g. !trade @bob Doflamingo for Machi
!animesub

Subscribe a channel to an anime, Kuma pings here when each new episode airs (via AniList). Also !animesub list / remove. Part of the Anime Lookup module.

!animesub add <title>
e.g. !animesub add Frieren
!animelink

Link your AniList account so others can view your profile and compare taste. !animelink remove to unlink. Part of the Anime Lookup module.

!animelink <AniList username>
e.g. !animelink Gigguk
!anilist

Show a member's linked AniList profile, anime & manga counts, days watched, mean score, top genres, and favourites.

!anilist [@user]
e.g. !anilist @friend
!affinity

Compare your anime taste with another linked member, a percentage match based on how similarly you've both scored the anime you've both seen (needs 5+ in common).

!affinity @user
e.g. !affinity @friend
!gachaOwnerToggleable

Turn character collecting on for this server. Off by default; while it's off !roll, !collection and the rest do nothing, so a server that doesn't want it never sees it.

!gacha on | off | status
e.g. !gacha on
!crosspingModeratorToggleable

Ping a role on the other side of a bridge, by name, from here. Matches the role on each bridged server through that platform's own API, so the same command works whichever side you run it from. Limited to one per server per minute, because it's loud.

!crossping <role name> [message]
!link

Link your account across Stoat, Discord, and Fluxer. Run !link for a code, then redeem it on another platform to share one login, profile, level, and coins.

!link · !link <code> · !link unlink
e.g. !link
!community

Group your servers across platforms into one community so leveling, economy, and profiles can be shared. Create one, then run !community add in each server you own.

!community create <name> | add | list | rename
e.g. !community create Aki's Den
!bridgeConfigurable

Link a channel across Stoat, Discord, and Fluxer so messages relay both ways, with avatars, attachments, edits, and deletes kept in sync. Supports remote edit logging and external webhook pass-through.

!bridge create | link | unlink | list | info | log | webhooks
e.g. !bridge create
!bridgeOwner

Manage the cross-platform bridge (Stoat, Discord, Fluxer) to seamlessly link channels together.

!bridge <create|link|unlink|list|info|log|webhooks>
!pingToggleable

Ping a role with the same name in every channel this one is bridged to (Stoat, Discord, Fluxer) at once. Off by default : the owner enables the Cross-Platform Ping module, and only permitted staff can use it.

!ping <role> [| message]
e.g. !ping Announcements | stream starts in 10!
!mention

Reply to someone's message with !mention and Kuma pings that exact person in their own message, even if they're on another bridged platform, where a normal reply wouldn't reach them.

!mention [note]
e.g. !mention are you around?
!mentionsConfigurable

Owner control for whether a bridged partner server can ping your members with !mention. On by default; !mentions off prevents cross-platform mentions reaching your community.

!mentions on | off
e.g. !mentions off
!bumpPermitted

Resurface your community's listing at the top of the directory. The listing has to be approved first, and you can bump once every 6 hours. Also available from the dashboard.

!bump
!youtubeOwnerConfigurable

Announce new uploads from a YouTube channel in a chosen channel. Add channels by link or @handle.

!youtube add <link or @handle> · !youtube list · !youtube remove <channel>
e.g. !youtube add youtube.com/@MrBeast
!crosspostPermittedConfigurable

Manage cross-server message relay between linked servers.

!crosspost setup | clear
!webhookPermittedConfigurable

Generate inbound webhook tokens. POST to api.kumabot.xyz/api/webhook/<token> from GitHub, Twitch, or anything custom.

!webhook create | list | delete
e.g. !webhook create #github GitHub Releases
!webhookOwner

Manage inbound webhooks for receiving alerts from third-party services like GitHub or Matrix.

!webhook <create|list|delete>
!feedPermittedConfigurable

Route external content (YouTube, RSS, Twitter) to your channels via feed endpoints.

!feed create | list | delete
e.g. !feed create #updates youtube Gaming Channel
!rssPermittedToggleableConfigurable

Follow RSS, Atom, or JSON feeds in a channel, Kuma posts new items automatically (~every 15 min). Just paste a YouTube link (youtube.com/@handle), a subreddit (r/news), a Mastodon handle (@user@instance), Bluesky, GitHub releases, or any blog feed and Kuma works out the URL. Per-feed keyword filters (only post / skip matching items) and an optional role ping on new posts.

!rss add <url> | remove <url> | list | check <url> | filter <url> include|exclude <words> | mention <url> <@role|off>
e.g. !rss add youtube.com/@MrBeast
!blueskyPermittedToggleableConfigurable

Subscribe or unsubscribe to a Bluesky account's posts in the current channel. Also available as !bsky.

!bluesky @handle
e.g. !bluesky @alice.bsky.social
!bluesky fetch

Fetch the latest 3 posts from a Bluesky account, one-off, doesn't subscribe.

!bluesky fetch @handle
e.g. !bluesky fetch @bsky.app
!bluesky subsPermitted

List Bluesky subscriptions for this channel (subs) or the entire server (all).

!bluesky subs | all
!bluesky unsubPermittedConfigurable

Remove a Bluesky subscription from the current channel.

!bluesky unsub @handle
!experimentKuma Team

Switch an experimental feature on for a single server while it's being tested. Run it in the server you want to test in: !experiment list shows what's currently available and !experiment status shows what's switched on here. Only the Kuma team can run this, so ask us if you'd like your server on an experiment.

!experiment enable <key> | disable <key> | status | list
e.g. !experiment list
!staffhubKuma Team

Sign in to the Staff Hub. Kuma DMs you a one-time link, and running the command yourself is what proves the account is yours. Kuma support staff only.

!staffhub