⚠️

Discord bots maintained by Aki Works will soon be consolidated into Kuma for better support, more features and uniform capabilities. This will not impact bots currently in your community or preset settings.

🏳️‍🌈
Pride Doesn't End Here
🧸
Kuma Cross-Platform
Coming soon
Reference

Every command. One prefix.🌸

169+ commands across 11 categories. Search, browse, or jump to a section, everything Kuma Bot can do is right here.

169+
Commands
23
Modules
11
Categories
Fully tuneable

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.

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.

Inbound webhooks

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://kuma-stoat-bot-production.up.railway.app/api/webhook/<token>
Generic payload: { "title": "...", "description": "...", "url": "..." }
!help

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

!help [command]
!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
!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
!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
!pollModerator

Create a reaction poll. Up to 10 options.

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

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

!case appeal <id> <reason> | status [id]
!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
!nickEveryone

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
!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
!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
!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
!blacklistModeratorToggleable

Manage the AutoMod word blacklist for this server.

!blacklist add|remove|list <word>
!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. 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
!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
!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. 60 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
!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
!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
!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
!permsOwnerConfigurable

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

!perms grant | revoke | list | reset
e.g. !perms grant webhook
!mod addOwnerConfigurable

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

!mod add <@user>
!mod removeOwnerConfigurable

Remove a member's moderator permissions.

!mod remove <@user>
!mod listOwner

Show every registered moderator role.

!mod list
!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
!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
!togglePermittedToggleableConfigurable

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

!toggle <module> on | off
e.g. !toggle economy off
!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 on | off | newonly on|off | spamage <hours> | status
e.g. !automod newonly on
!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 action <ban|kick|mute|off> | strikes <1-5> | nameban <on|off> | days <n>
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
!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
!autorolePermittedToggleableConfigurable

Auto-assign a role to every new member. Backed up automatically during raids.

!autorole set <@role> | off | status
!modOwner

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

!mod add|remove <user> | list
!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
!keywordPermittedToggleable

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

!keyword add|remove|list ...
!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 captcha link. 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 two options, both of which hand members a single verified role. Basic is a channel members react in to get in (light, friendly, stops bots), set up with !verification basic <@role> <#channel>. Smart is a captcha with risk scoring, anti-VPN and a staff queue for suspicious joins, set up with !verification smart <@role>. 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. Dial Smart strictness with !webverify level 0-4. The detailed knobs still live under !verify and !webverify. Members can run !verification to (re)start whichever gate is active.

!verification (guided) | basic <@role> <#channel> | smart <@role> | post <#channel> | off | status
e.g. !verification setup @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 a Cloudflare captcha page on kumabot.xyz/verify, 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. 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. 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 and min account age; 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 | pending | approve <id> | deny <id> | channel <#ch> | agedays <n> | status
e.g. !webverify setup @Verified
!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
!xpblacklistPermittedConfigurable

Manage channels where XP is not earned.

!xpblacklist add | remove | list <#channel>
!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.

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

Run a temporary XP-boost event, everyone earns multiplied XP for a while. Great for weekends or events.

!xpboost <multiplier> <duration> | off | status
e.g. !xpboost 2x 1h
!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
!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!
!rolePermittedConfigurable

Add or remove roles from a user.

!role add | remove <@user> <role>
e.g. !role add @aki 1234567890
!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). Use `test <image-url>` to check the gore scanner without posting anything graphic.

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

Set the channel where suggestions from !suggest are posted.

!suggestchannel <#channel>
!reviverPermittedConfigurable

Ping a role when a channel goes inactive for X minutes.

!reviver set <#channel> <@role> [minutes] | remove | list
!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.

!starboard channel <#channel> | emoji <emoji> | threshold <n> | off
e.g. !starboard channel #highlights
!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
!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
!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 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!
!keyword listModerator

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

!keyword list
!keyword channelModeratorConfigurable

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

!keyword channel <#channel|here|clear>
e.g. !keyword channel #staff-alerts
!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
!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
!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
!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
!hug

Send an anime reaction GIF. Over 50 reactions: hug, kiss, cuddle, pat, poke, boop, slap, punch, bonk, yeet, tickle, highfive, handhold, wave, dance, salute, blowkiss, and many more moods (happy, angry, laugh, pout, facepalm, sleep, and so on). Reply to a message or @mention someone to aim it at them, or use it on its own. Part of the toggleable Reaction GIFs module; owners can also turn individual reactions on or off with !roleplay.

!hug [@user] (or reply to someone)
e.g. !pat (replying to someone)
!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
!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.

!counting set <#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.

!shiritori set <#channel> | status | reset | off
e.g. !shiritori set #word-chain
!wordgenEveryoneConfigurable

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
!mafiaEveryoneConfigurable

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
!mathquiz

Solve a quick math problem. First correct answer wins.

!mathquiz
!wyr

Would You Rather, choose between two options.

!wyr
!case viewModerator

View full details of a moderation case.

!case view <id>
!case searchModerator

Search all cases for a specific user.

!case search <@user>
!case recentModerator

View the most recent moderation cases.

!case recent [limit]
!case activeModerator

List all currently active (unresolved) cases.

!case active
!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 resolveModerator

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

!case resolve <id>
!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 revokeModerator

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

!case revoke <id>
!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 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 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
!blacklist addModeratorConfigurable

Add a word or phrase to the blacklist.

!blacklist add <word>
!blacklist removeModeratorConfigurable

Remove a word or phrase from the blacklist.

!blacklist remove <word>
!blacklist listModerator

Show every blacklisted word currently active.

!blacklist list
!blacklist clearModeratorConfigurable

Clear the entire blacklist.

!blacklist clear
!setlog moderationPermittedConfigurable

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

!setlog moderation <#channel>
!setlog messagesPermittedConfigurable

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

!setlog messages <#channel>
!setlog serverPermittedConfigurable

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

!setlog server <#channel>
!setlog offPermittedToggleable

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

!setlog <type> off

Ready to try these out?

Add Kuma to your server and start using every command, no setup, no config files.