Captain Guild

Docs

Getting started

Click Dashboard at the top of this page. Discord asks you to confirm who you are, and then you pick a server. The bot's /dashboard command also answers with a private link that signs you in. You need Manage Server to change settings. Each page in the sidebar is one feature. Most features do nothing until you set them up. The bot keeps recent message text for the deleted and edited message logs, 30 days unless you change it.

Move the bot's role above every role you want it to hand out. Discord doesn't let a bot give or take a role at or above its own.

Proposals

A proposal is a change to the server put to two votes on one post. A moderator submits it with /submit_proposal or from the Proposals page. The bot posts it, opens a discussion thread and adds the two vote reactions.

Members have the voting time set on the page, 72 hours unless you change it. Their vote passes if more than half of the votes are in favor. Moderators vote with the same reactions, counted apart, with no deadline. Their vote is decided once more than half of all moderators agree. A proposal is approved only if both votes pass, and it's rejected as soon as either one fails.

Once the member vote is over, moderators who haven't voted get a DM every 24 hours until their vote is decided. /proposal promote or Put to a vote on the Suggestions page starts a proposal from a suggestion, and the result becomes that suggestion's decision.

Role rules

A role rule adds or removes roles for members who match all of its conditions, up to ten. A condition looks at a set of roles: whether a member has any of them, all of them, none of them, or is missing one, or how many of them they hold. Rules run from the top of the list on the Role rules page, and a change one rule makes can set off the rules below it.

A rule that keeps in sync takes its added roles back from members who stop matching, unless another rule that matches them adds the same role. Without it, a role stays until something else takes it. /rolerule create makes a rule that keeps one target role on everyone who holds any of the tracked roles, with an optional ignored role that keeps people out and a required role they must also hold.

The bot looks at a member when their roles change and when they pass the rules screen, at everyone when a rule is saved or switched on, and at everyone again every 10 minutes. Each member gets one role edit for all of their changes, and edits go out at about one a second. Preview on the page shows who would gain and lose each role before you save, and a save that changes more than 200 members asks you to confirm the count. Rules that keep undoing each other's changes are switched off, and so is a rule that checks for a role someone deleted. The server log channel says which ones.

/mass_mention pings every member who holds all of the roles you name, up to 1,000 of them, and asks first when it's more than 50. It needs Mention Everyone, and the roles named in its first line don't ping.

How commands work

Most commands work three ways: as a slash command, after the server's prefix (!warn @someone spamming), and after mentioning the bot. A command listed below with ! in front has no slash form.

A command needs its Discord permission, shown beside it below. A group whose subcommands differ says Varies, and each subcommand shows its own. On the Commands page you can grant bypass roles per command, so a moderator role can use a command without holding that permission in Discord. The same page limits a command to chosen channels or roles, turns it off, or sends its output somewhere else.

A command marked Staff, Moderators or Veterans checks for that group itself, and the group is set on that feature's page. A bypass role doesn't open it.

The bot manager role counts as holding every permission, Ban Members included. Only the server owner or an Administrator can set it, or any other role that makes people staff. To add a bypass role, you need the permission it skips, and the role has to sit below your highest. @everyone can't hold any of these. Manage Server and Administrator skip channel and role limits. A turned-off command is off for everyone, except that /dashboard and /my_data always work, and the owner and Administrators always keep /config.

Settings by page

Each page in the sidebar holds its own settings, and most explain themselves there. These change how a feature behaves. You need Manage Server to change them.

PageSettingWhat it does
AutomodPause the senderA timeout of up to 59 seconds on every hit of a rule, to break up a burst. It makes no case. 0 turns it off.
AutomodCopied textCounts one text in one channel, whoever posts it, and deleting takes the earlier copies too. Text under eight letters doesn't count.
AutomodBad namesReads usernames and nicknames against the bad word list, when someone joins and when they change one.
AutomodPunish aboveHow many warnings someone can hold before a punishment. More steps can follow, such as a mute above three and a ban above five.
AutorolesTimed rolesGives a role some time after someone joins.
AutorolesSkip botsBots that join get no autoroles or timed roles.
GreetingsAnnouncement TimeThe hour birthdays go out. The whole server shares one time.
GreetingsJoins in a minute before welcomes pausePast this many, the bot skips each welcome and join DM, and posts one line with the count once joins go quiet. 0 welcomes everyone.
LevelsPanel opacityHow solid the dark panel on a rank card is, from clear to solid.
LoggingModerator delete log channelDeletes where the audit log names a moderator or bot, and purges. Empty keeps them in the message log channel.
LoggingRole log channelMembers' role changes. Empty keeps them in the member log channel.
LoggingName log channelName and nickname changes. Empty keeps them in the member log channel.
LoggingTimeout log channelTimeouts and lifted timeouts. Empty keeps them in the member log channel.
StarboardPrivate channelsA message stays off the board when someone who can open the board couldn't read its channel. A channel or category listed here goes up anyway.
Voice controlsRecord mini mutes as casesOff, a mini mute writes only to its log channel and that page. On, it also goes in the mod log, the member's case list and moderator rankings.

New Twitch alerts go to the channel the command is used in. !twitch default_channel sets another one.

Your data

Any member can type /my_data for a private link to a page that shows what the bot holds about them, gives them a copy, and deletes what's theirs to delete.

The Backup page exports everything stored for a server as one file and can put it back. Scheduled snapshots stay on the server. The Activity page shows who changed which setting, with undo.

Text shortcuts

These short names work when you type a command with the server's prefix. Each one runs the longer command under the same rules.

TypeIt runs
8ballfun 8ball
add_ignored_rolerolerule set_ignored
add_required_rolerolerule set_required
add_tracked_rolesrolerule add_tracked
addemojifun addemoji
aefun aesthetics
aestheticsfun aesthetics
affeeds autofeeds
announcefeeds announce
approvesuggestion approve
artriggers
assaultgames incursion
assaultsgames incursion
attachmentspamautomod attachmentspam
autofeedfeeds autofeeds
autofeedsfeeds autofeeds
automod censor addautomod censor words add
automod censor listautomod censor display
automod censor removeautomod censor words remove
automod linkspam blautomod linkspam blacklist add
automod linkspam clearblautomod linkspam clear blacklist
automod linkspam clearwlautomod linkspam clear whitelist
automod linkspam unblautomod linkspam blacklist remove
automod linkspam unblacklistautomod linkspam blacklist remove
automod linkspam unwlautomod linkspam whitelist remove
automod linkspam wlautomod linkspam whitelist add
autoresponsetriggers
awwcute aww
awwbombcute aww true
banmessagegreetings banmessage
banmsggreetings banmessage
bffun boldfancy
boldfancyfun boldfancy
boldfrakturfun boldfraktur
botpermissionsmisc botpermissions
capslimitautomod caps limit
capspautomod caps punishment
capspunishautomod caps punishment
capspunishmentautomod caps punishment
catcute cat
catbombcute cat true
cembedembed custom
censorautomod censor
change_target_rolerolerule change_target
charinfomisc charinfo
choicefun pick
choosefun choose
clapfun clap
cleanconfigconfig cleanconfig
coinfun coinflip
coinflipfun coinflip
commandstag list
config modrole clearconfig clearmodrole
considersuggestion consider
create_rolesetrolerule create
customembedembed custom
delete_rolesetrolerule delete
deletefilesautomod deletefiles
denysuggestion deny
diagnoseconfig diagnose
disableconfig disable
dmjoingreetings joindm
dogcute dog
dogbombcute dog true
doublefun double
dsfun double
dumpstats dump
ecembedembed editcustom
editembedembed edit
embedsourceembed source
embedunhideembed unhide
emojifyfun emojify
enableconfig enable
fancyfun fancy
farewellgreetings farewell
feedfeeds
fffun fancy
flipfun coinflip
fngames fortnite
fortnitegames fortnite
frakturfun fraktur
fun_roles deletedelete_fun_roles
fun_roles deploydeploy_fun_roles
games alerts disablegames alerts free-off
games alerts enablegames alerts free-on
greetgreetings welcome
honeypotautomod honeypot
imembers info
ignoreconfig ignore
implementedsuggestion implemented
incursiongames incursion
infomembers info
invasiongames invasion
invasionsgames invasion
invitemisc invite
invitespamautomod invitespam
joindmgreetings joindm
joinpmgreetings joindm
leavegreetings farewell
level accentlevel config accent
level alphalevel config opacity
level bllevel blacklist add
level colorlevel config color
level colourlevel config color
level dmlevel toggle dm
level leaderboardleaderboard
level opacitylevel config opacity
level replacelevel toggle replace
level resetalllevel reset server
level set_message_xp resetlevel set_message_xp default
level shhlevel toggle announcements
level unbllevel blacklist remove
level unblacklistlevel blacklist remove
levelslevel
linkspamautomod linkspam
list_rolesetsrolerule
lvllevel
lvlslevel
mentionspamautomod mentionspam
mini_mute applymini_mute
mini_mute liftmini_mute_lift
modonlyconfig modonly
modroleconfig modrole
newmembersmembers newusers
newusersmembers newusers
oldestmembers oldest
oldmembersmembers oldusers
oldusersmembers oldusers
owofyfun owofy
permissionsmisc permissions
pickfun pick
pickmyclassgames pickmyclass
pickmyspecgames pickmyspec
pmjoingreetings joindm
proposal submitsubmit_proposal
remindersreminder mine
remove_ignored_rolerolerule clear_ignored
remove_required_rolerolerule clear_required
remove_tracked_rolesrolerule remove_tracked
resetgames reset
restrictconfig restrict
rmreminder
robloxgames roblox
roblox playgames roblox
rollfun roll
scfun smallcaps
searchtag search
selectfun pick
serverinfostats serverinfo
set farewellgreetings set_farewell
set twitchtwitch default_channel
set welcomegreetings set_welcome
shakefun shake
slowmodeautomod slowmode
smautomod slowmode
smallcapsfun smallcaps
spacefun space
starstarboard
stealfun addemoji
stickyliststicky
stickyremovesticky remove
stickytemplatesticky fromtemplate
subscribereminder subscribe
suggestsuggestion suggest
suggestionssuggestion
sync_rolesrolerule sync
taglisttag list
testgreetgreetings testgreet
timerreminder
twitch fmttwitch format
udfun urbandictionary
unignoreconfig unignore
unmodonlyconfig unmodonly
unrestrictconfig unrestrict
uptimestats uptime
urbandictionaryfun urbandictionary
vc access grantvc_access_grant
vc access revokevc_access_revoke
vc access statusvc_access_status
vc deafenvc_deafen
vc disconnectvc_disconnect
vc mutevc_mute
vc releasevc_release
vc reportvc_report
welcomegreetings welcome
whenistheresetgames reset
wikimisc wiki
youngestmembers youngest
ytyoutube

A word a typed command can't use is refused with the command's usage, and nothing changes. These commands also take text straight after their name:

TypeIt runs
automod attachmentspam ...automod attachmentspam set ...
automod censor ...automod censor words add ...
automod copyspam ...automod copyspam set ...
automod linkspam ...automod linkspam rate ...
automod mentionspam ...automod mentionspam set ...
automod slowmode ...automod slowmode set ...
automod whitelist ...automod whitelist add ...
games fortnite ...games fortnite pc ...
giveaway ...giveaway create ...
level blacklist ...level blacklist add ...
log ...log config ...
starboard ...starboard setup ...
sticky ...sticky add ...
triggers ignore ...triggers ignore add ...
twitch ...twitch add ...
youtube ...youtube add ...

Commands

Config

CommandWhat it doesNeeds
/aboutFacts about this botNone
/configShow how commands are set up in this server
cleanconfig, clearmodrole, diagnose, disable, enable, ignore, modonly, modrole, restrict, unignore, unmodonly, unrestrict
Also answers to cleanconfig, config modrole clear, diagnose, disable, enable, ignore, modonly, modrole, restrict, unignore, unmodonly, unrestrict
Manage Server
/dashboardGet a private link that signs you in to the dashboardNone
/helpList commands, or show what one doesNone
/my_dataSee, download or delete what the bot holds about youNone
/pingCheck that the bot is aliveNone
/prefixShow the prefixes this server uses for tags and text commands
add (Manage Server), clear (Manage Server), remove (Manage Server), set (Manage Server)
Varies
!setSet the channel for welcome or leave messages, or for Twitch alertsManage Server

Automod

CommandWhat it doesNeeds
/automodShow this server's automod settings
attachmentspam disable, attachmentspam dryrun, attachmentspam punishment, attachmentspam set, caps disable, caps dryrun, caps enable, caps limit, caps punishment, censor clear, censor disable, censor display, censor dryrun, censor enable, censor punishment, censor words, copyspam disable, copyspam dryrun, copyspam punishment, copyspam set, deletefiles, drama, honeypot add, honeypot clear, honeypot disable, honeypot dryrun, honeypot enable, honeypot punishment, honeypot remove, honeypot server, invitespam disable, invitespam dryrun, invitespam enable, invitespam norole, invitespam punishment, invitespam whitelist, linkspam blacklist, linkspam block, linkspam clear, linkspam disable, linkspam dryrun, linkspam enable, linkspam norole, linkspam off, linkspam punishment, linkspam rate, linkspam whitelist, log, media, mentionspam disable, mentionspam dryrun, mentionspam punishment, mentionspam set, namefilter disable, namefilter dryrun, namefilter enable, namefilter punishment, slowmode disable, slowmode dryrun, slowmode punishment, slowmode set, threshold, unmedia, !automod unwhitelist, warnpunish, warnstep add, warnstep remove, !automod whitelist add, whitelist channels, whitelist roles
Also answers to +, -, am, attachmentspam, automod censor add, automod censor list, automod censor remove, automod linkspam bl, automod linkspam clearbl, automod linkspam clearwl, automod linkspam unbl, automod linkspam unblacklist, automod linkspam unwl, automod linkspam wl, capslimit, capsp, capspunish, capspunishment, censor, deletefiles, honeypot, invitespam, linkspam, mentionspam, mo, p, punish, slowmode, sm, umo, unmo, unwl, warn, warnpunishment, wl, wp
Manage Server
/autopurgeShow which channels are purged on a schedule
remove, set
Manage Server

Feeds

CommandWhat it doesNeeds
/feedsList this server's feeds
announce, autofeeds clear, autofeeds create, autofeeds delete, autofeeds everyone, autofeeds here, autofeeds move, autofeeds repeat, autofeeds silence, autofeeds silent, clear, create, delete, move
Also answers to af, announce, autofeed, autofeeds, del, feed, remove
Manage Server

Fun

CommandWhat it doesNeeds
/cuteShow a random animal picture
Also answers to aww, awwbomb, cat, catbomb, dog, dogbomb
None
/echoHave the bot post your message, with a button that shows who askedManage Server
/funText toys, coin flips and the magic 8 ball
addemoji (Manage Expressions), aesthetics (Manage Server), boldfancy (Manage Server), boldfraktur (Manage Server), clap (Manage Server), coinflip, double (Manage Server), eightball, emojify (Manage Server), fancy (Manage Server), fraktur (Manage Server), owofy (Manage Server), pick (Manage Server), roll, shake, smallcaps (Manage Server), space (Manage Server), urbandictionary (Manage Server)
Also answers to 8ball, addemoji, ae, aesthetics, bf, boldfancy, boldfraktur, choice, choose, clap, coin, coinflip, double, ds, emojify, fancy, ff, flip, fraktur, owofy, pick, roll, sc, select, shake, smallcaps, space, steal, ud, urbandictionary
Varies

Greetings

CommandWhat it doesNeeds
/birthdaySee someone's birthday
channel (Manage Server), config, list, remove, set
Varies
/greetingsShow the welcome, farewell and ban setup
ban_channel, banmessage, farewell, farewell_channel, joindm, !greetings set_farewell, !greetings set_welcome, testgreet, welcome, welcome_channel
Also answers to banmessage, banmsg, dmjoin, farewell, greet, joindm, joinpm, leave, pmjoin, set farewell, set welcome, testgreet, welcome
Manage Server

Levels

CommandWhat it doesNeeds
/leaderboardList members by XP
Also answers to level leaderboard
None
/levelLevels, XP and rank cards
add_xp (Manage Server), background, blacklist add (Manage Server), blacklist remove (Manage Server), channel (Manage Server), config (Manage Server), limit (Manage Server), log (Manage Server), mee6import (Manage Server), member, message (Manage Server), !level messagexp (Manage Server), mod (Manage Server), rate (Manage Server), reset (Manage Server), restore (Manage Server), reward (Manage Server), rewardonly (Manage Server), serverbackground (Manage Server), set_level (Manage Server), set_message_xp (Manage Server), sync (Manage Server), toggle (Manage Server), voice_xp (Manage Server)
Also answers to addxp, bg, level accent, level alpha, level bl, level color, level colour, level dm, level opacity, level replace, level resetall, level set_message_xp reset, level shh, level unbl, level unblacklist, levels, lvl, lvls, msgxp, serverbg, setlevel, voicexp
Varies

Logging

CommandWhat it doesNeeds
/logShow how logging is set up in this server
aio, channel, config, export, ignore, import, join_channel, member_channel, message_channel, moderator_delete_channel, name_channel, prefix, remove_prefix, role_channel, server_channel, timeout_channel, unignore, voice_channel
Also answers to custom, ip, joinchannel, memberchannel, messagechannel, moderatordeletechannel, namechannel, removeprefix, rolechannel, serverchannel, timeoutchannel, up, voicechannel
Manage Server

Misc

CommandWhat it doesNeeds
/miscSmall tools: characters, permissions and invite links
botpermissions (Manage Roles), charinfo, invite, permissions, wiki
Also answers to botpermissions, charinfo, permissions
Varies

Moderation

CommandWhat it doesNeeds
/banBan someone, whether or not they're in the serverBan Members
/cleanupDelete my recent messages and commands aimed at me. Pinned ones go tooManage Server
/clearwarnsRemove all of a member's warnings
Also answers to clearwarn, clearwarnings
Manage Roles
/delete_fun_rolesDelete every role from the fun role pack
Also answers to fun_roles delete
Administrator
/delete_messagesDelete messages in a channel or thread by filtersAdministrator
/deploy_fun_rolesCreate the role pack as an alphabetical block directly below a role
Also answers to fun_roles deploy
Administrator
/fun_rolesShow the server's fun role packAdministrator
/hardmuteMute a member and take their other roles until it endsManage Roles
/kickKick a memberKick Members
/lockdownStop @everyone posting in a channel or the whole server
channel (Manage Channels), list (Manage Channels), server (Manage Channels), setup (Manage Roles)
Varies
/massbanBan a list of people by ID or mention, in or out of the serverBan Members
/mini_muteBriefly mute a member (Server Veterans and moderators)
Also answers to mini_mute apply
Moderators and Veterans
/mini_mute_liftTake a member's mini mute off early (moderators)
Also answers to mini_mute lift
Moderators
/modlogSet up the modlog and read its cases
clear, create, export, from, highscores, reason, repost, set
Also answers to reason
Manage Server
/muteMute a member with the mute role, for a time or until unmutedManage Roles
/muteroleChoose, make or update the role that mutes members
create (Manage Channels, Manage Server, Manage Roles), set (Manage Roles), update (Manage Channels, Manage Server, Manage Roles)
Varies
/mutesList running mutes and when they endManage Roles
/notesPrivate notes about members that only staff can read
clearnotes, removenote, setnote, view
Also answers to clearnotes, removenote, setnote
Manage Server
/punishment_noticeWrite the standard moderation notice for a ticket with a formStaff
/purgeDelete messages in this channel. Pinned messages stay
all, bot, contains, embeds, emoji, files, human, images, links, mentions, reactions, user
Also answers to humans, pings
Manage Server
/raidSee raid mode, which holds new members under the mute role
off, on, release
Manage Roles
/removewarningRemove a warning by its case number
Also answers to removewarn
Manage Roles
/reportReport a member or a problem to the staffNone
/reportchannelSet the channel where reports are sentManage Server
/reviewOpen a member's review thread and start its checklistStaff
/role_orderList the server's roles in display order, top to bottomAdministrator
/setnickChange a member's nickname, or clear itManage Nicknames
/softbanBan and unban someone at once, which clears their messagesBan Members
/tempbanBan someone for a length of timeBan Members
/tempbansList temporary bans and when they endBan Members
/timeoutTime a member out with Discord's own timeoutTimeout Members
/unbanLift a banBan Members
/unlockdownLet @everyone post again
channel, server
Manage Channels
/unmuteUnmute a memberManage Roles
/untimeoutRemove a member's timeout
Also answers to removetimeout
Timeout Members
/vcSee your progress toward voice channel access
button (Manage Server)
Varies
/vc_access_grantGive someone voice access now, skipping the requirements
Also answers to vc access grant
Moderators and Veterans
/vc_access_revokeTake away someone's voice access
Also answers to vc access revoke
Moderators
/vc_access_statusShow someone's progress toward voice access
Also answers to vc access status
Moderators
/vc_deafenServer-deafen someone for a while
Also answers to vc deafen
Moderators and Veterans
/vc_disconnectDisconnect someone from voice, and optionally block rejoining for a while
Also answers to vc disconnect
Moderators and Veterans
/vc_muteServer-mute someone for a while
Also answers to vc mute
Moderators and Veterans
/vc_releaseLift someone's temporary voice mute, deafen or rejoin block
Also answers to vc release
Moderators
/vc_reportReport someone misbehaving in a voice channel to the moderators
Also answers to vc report
None
/warnWarn a memberManage Roles
/warnsList a member's warnings, or the newest in the serverManage Roles

Roles

CommandWhat it doesNeeds
/autoroleShow which roles people get when they join
add, blacklist, reassign, remove, unblacklist
Also answers to autoroles, bl, readd
Manage Roles
/mass_mentionPing every member who holds all of the roles you name
Also answers to massmention, mm
Mention Everyone
/rankGive yourself roles from the server's list
addrank (Manage Roles), allranks, custom, removerank (Manage Roles)
Also answers to addrank, c, ranks, removerank
Varies
/reactionroleSet up roles members pick up from a message
add (Manage Server), addmany (Manage Server), aio (Manage Server), !reactionrole aioi (Manage Server), !reactionrole aiou (Manage Server), !reactionrole aiov (Manage Server), !reactionrole binding (Manage Server), !reactionrole bl (Manage Server), blacklist (Manage Server), channel (Manage Server), !reactionrole clearbl (Manage Server), !reactionrole clearwl (Manage Server), color (Manage Server), !reactionrole drop (Manage Server), edit (Manage Server), fix (Manage Server), fixforeign (Manage Server), limit (Manage Server), link (Manage Server), links (Manage Server), !reactionrole lock (Manage Server), maxroles (Manage Server), mode (Manage Server), modify (Manage Server), move (Manage Server), !reactionrole normal (Manage Server), purge (Manage Server), remove (Manage Server), reorder (Manage Server), !reactionrole reversed (Manage Server), selfdestruct (Manage Server), setup (Manage Server), show, temp (Manage Server), !reactionrole unbl (Manage Server), !reactionrole unique (Manage Server), unlink (Manage Server), !reactionrole unwl (Manage Server), !reactionrole verify (Manage Server), whitelist (Manage Server), !reactionrole wl (Manage Server)
Also answers to cc, clear, colour, list, make, order, reactrole, rr, unblacklist
Varies
/roleGive, take and look up roles
add (Manage Roles), all (Manage Roles), allroles, bots (Manage Roles), bulk-cancel (Manage Roles), color (Manage Roles), create (Manage Roles), custom (Manage Roles), diagnose, humans (Manage Roles), in (Manage Roles), info, rall (Manage Roles), remove (Manage Roles), removeall (Manage Roles), removebots (Manage Roles), removehumans (Manage Roles), removein (Manage Roles)
Also answers to allroles, c, clear, colour, purge, rbots, rhumans, rin, rolediagnose
Varies
/roleruleRoles that follow from the roles members hold
add_tracked, change_target, clear_ignored, clear_required, create, delete, disable, enable, logchannel, remove_tracked, set_ignored, set_required, show, sync, test
Also answers to add_ignored_role, add_required_role, add_tracked_roles, change_target_role, create_roleset, delete_roleset, list_rolesets, remove_ignored_role, remove_required_role, remove_tracked_roles, rolerules, sync_roles
Manage Roles
/temproleGive or take roles for a limited time
add, custom, list
Also answers to c
Manage Roles
/timedroleShow roles given some time after joining
add, remove
Also answers to +, -, tr
Manage Roles

Stats

CommandWhat it doesNeeds
/statsShow command use, server facts and uptime
dump (Manage Roles), global, serverinfo, today, uptime, !stats usage
Also answers to dump, serverinfo, uptime
Varies

Notifications

CommandWhat it doesNeeds
/twitchShow the Twitch channels this server follows
add, !twitch default_channel, format, move, online, remove
Also answers to message, set twitch, twitch fmt
Manage Server
/youtubeShow the YouTube channels this server follows
add, format, move, remove
Also answers to message, sub, unsub, yt
Manage Server

Suggestions

CommandWhat it doesNeeds
/proposalList the proposals being voted on
promote (Moderators), recheck (Manage Server), settings (Manage Server), withdraw (Moderators)
Varies
/submit_proposalPut a change to the server to a vote
Also answers to proposal submit
Moderators
/suggestionShow how suggestions are set up
anonymous (Manage Server), approve (Manage Server), channel (Manage Server), consider (Manage Server), deny (Manage Server), dm (Manage Server), edit (Manage Server), implemented (Manage Server), limit (Manage Server), move (Manage Server), submit (Manage Server), suggest, who (Manage Server)
Also answers to anon, approve, consider, deny, implemented, suggest, suggestions
Varies

Tags & Triggers

CommandWhat it doesNeeds
/tagRun one of this server's tags
alias, append, claim, create, edit, info, list, modonly (Manage Server), nsfw (Manage Server), ownership (Manage Server), procreate, prompt, raw, remove, replace, restrict, search, share (Manage Server), stats, unshare (Manage Server), unshareall (Manage Server)
Also answers to &, +, ++, +=, -, a, add, commands, del, delete, e, owner, search, sub, taglist, update
Varies
/triggersList this server's triggers and what they ignore
channel, clear, create, endswith, exact, ignore add, ignore remove, regex, remove, role, role_blacklist, role_whitelist, startswith, strict, unignore
Also answers to -, add, ar, autoresponse, cs, del, delete, e, ew, role_bl, role_wl, s, sw
Manage Server

Utilities

CommandWhat it doesNeeds
/avatarsShow someone's avatar
Also answers to avatar
None
/giveawayRun giveaways with an enter button
create, end, list, participants, reroll
Manage Server
/highlightGet a DM when a word you follow comes up
add, block, clear, matches, remove, unblock
Also answers to +, -, del, hl, m, match
Manage Messages
/membersLook up a member, or rank members by age
!members info, newusers (Manage Server), oldest (Manage Server), oldusers (Manage Server), youngest (Manage Server)
Also answers to i, info, newmembers, newusers, oldest, oldmembers, oldusers, youngest
Varies
/pollPost a poll people vote on with reactionsManage Server
/reminderGet a DM about something later
cancel, clear, incursion, mine, repeat, subscribe, when
Also answers to -, del, remind, reminders, remindme, remove, rm, subscribe, timer
None
/tempchannelMake a text channel that deletes itself after a whileManage Channels

Embeds

CommandWhat it doesNeeds
/embedPost and edit embeds
create (Manage Server), custom (Manage Server), edit (Manage Server), editcustom (Manage Server), source, unhide (Manage Server)
Also answers to cembed, customembed, ecembed, editembed, embedsource, embedunhide
Varies

Starboard

CommandWhat it doesNeeds
/starboardShow how the starboard is set up
autostar (Manage Server), blacklist (Manage Server), emoji (Manage Server), jump (Manage Server), limit (Manage Server), lock (Manage Server), nsfw (Manage Server), random, remove (Manage Server), self (Manage Server), server, setup (Manage Server), show, stats, unblacklist (Manage Server)
Also answers to source, star, top
Varies

Sticky messages

CommandWhat it doesNeeds
/stickyShow the sticky messages in this server
add, !sticky fromtemplate, remove, template
Also answers to stickylist, stickyremove, stickytemplate
Manage Server

Games

CommandWhat it doesNeeds
/gamesPlay TopRoll, look up players and check World of Warcraft timers
alerts (Manage Server), fortnite pc, fortnite playstation, fortnite xbox, incursion, invasion, leaderboard, list, pickmyclass, pickmyspec, play, reset, roblox, toproll
Also answers to assault, assaults, fn, fortnite, games alerts disable, games alerts enable, incursion, invasion, invasions, pickmyclass, pickmyspec, roblox, roblox play, whenisthereset
Varies

Template language

Tags, triggers, greetings, level-up messages and any other message a server writes can hold blocks. A block is a small instruction in curly braces. The bot replaces it with a result when the message goes out, so Welcome, {user}! greets each person by name.

How a template runs

A block has a name, and sometimes a parameter in parentheses and a payload after a colon: {name(parameter):payload}.

Blocks run from the inside out and left to right, and each result takes the block's place in the text around it. An outer block therefore reads what its inner blocks produced, and a later block can use a variable an earlier one set.

ExampleResult
{upper:{lower:ABC}d}ABCD
{=(a):1}{=(a):{a}2}{a}12

Every complete block runs, even inside the branch of an if that isn't taken. To make a block depend on a condition, put the condition inside the block. The second example below shows the other way to do it, which builds the block's name with an if.

ExampleResult
{if(1==2):{=(x):set}}{x}set
{=(x):off}{{if(1==1):=(x)}:on}{x}on

A name nothing answers to stays as written, and so does a block that can't work with what it was given, such as math on a word. Spaces and blank lines at the very start and end of the result are removed. Block names ignore capitals. Variable names don't.

ExampleResult
{nothing} {m:one+two}{nothing} {m:one+two}
{UPPER:a}{=(Name):b}{name}A{name}
{=(a):1}hello hello

Text from outside the template is data. What a member typed, a nickname or a channel's name can fill in a value, but its punctuation can't change what a block does. Someone typing x==x can't pass a check against a passphrase, and someone typing cmd:ban me can't turn {{args}} into a command block. A name built from outside text can only read a variable.

Where blocks work

Tags and triggers run everything in this reference. In greetings and other messages a server writes, the blocks under Actions and Commands do nothing and leave no text behind, because no one ran them. Embed blocks work everywhere.

Text assigned in a message's text is there for its embed too, so a variable can hold a sentence the embed's title and description both use. An embed's parts run in the order they're shown on the page: author, title, link, description, fields, image, thumbnail, footer.

What the examples assume

Every example in this reference runs against these values, and an automated test checks each one against the bot, so the results shown are the results you'd get.

ValueIn the examples
The personDisplay name Ada, username ada, ID 111111111111111111, joined 2025-06-07 08:09:10, account made 2020-02-03 04:05:06
Their rolesCrew, position 2, ID 222222222222222222, color #5989ab, plus @everyone with the server's ID
The targetGrace, username grace, ID 555555555555555555, mentioned in the message
The serverHarbor, ID 333333333333333333, created 2019-01-01 00:00:00, owned by owner, with four members and one bot
The channelgeneral, ID 444444444444444444, topic Say hello, slowmode 30, position 3
The role, in role triggersCrew, just added
The text after the nameone two three
The tag's use count42
The time2026-01-02 03:04:05 UTC

Variables

BlockWhat it givesExampleResult
{args}The text after the tag's name. In a trigger, the whole message.{args}one two three
{message}The same text, as a separate variable. Assigning to one leaves the other alone.{=(args):x}{args} {message}x one two three
{1}, {2} and so onOne word of {message}.{2}two
{uses}How many times the tag has run, counting this time.{uses}42
{unix}The time now, in seconds since 1970.{unix}1767323045
{mention}Mentions the person using the tag.{mention}<@111111111111111111>

Assigning

{=}, {assign}, {let} and {var} all do the same thing: they store the payload under the name in the parameter and leave no text. Read it back with the name in braces. A variable can have any name, but a block's name goes to the block first, so give variables names of two letters or more.

BlockWhat it givesExampleResult
{=(name):value}Nothing. Stores the value.{=(pet):cat}I have a {pet}I have a cat
{assign(name):value}The same.{assign(pet):cat}{pet}cat
{let(name):value}The same.{let(pet):cat}{pet}cat
{var(name):value}The same.{var(pet):cat}{pet}cat

A name can be built from other blocks, and an empty name is allowed. {=():} gives {} something empty to answer with, which is what makes a block's name that sometimes comes out empty safe to use.

ExampleResult
{=(msg2):second}{=(n):2}{msg{n}}second
[{=():}{}][]

Reading part of a variable

Any variable holding text can be read a piece at a time, with a position in parentheses. Pieces are split on spaces, or on whatever the payload says. 1 is the first piece, 0 is the last and -1 is the one before it. A plus sign after the number means that piece onward, and before it means up to that piece. A position past the end gives the whole value, and a span past the end gives nothing.

ExampleResult
{args(1)}one
{args(0)}three
{args(-1)}two
{args(2+)}two three
{args(+2)}one two
{=(when):a,b,c}{when(2):,}b
{args(9)}one two three
[{args(9+)}][]

People

{user} is the person using the tag. {target} is the first person they mention after the tag's name, or the same person when they mention nobody. On their own, both give the display name. In a trigger, the target comes from the message's mentions. In a role trigger, {user} is whoever changed the role and {target} is the member it changed on. Its require, blacklist, dm and command blocks act for that member.

BlockWhat it givesExampleResult
{user}The display name.{user}Ada
{target}The target's display name.{target}Grace
(id)The Discord ID.{user(id)}111111111111111111
(name)The username.{user(name)}ada
(proper)The username, with the old four-digit tag for accounts that still have one.{user(proper)}ada
(nick)The display name.{target(nick)}Grace
(mention)A mention.{target(mention)}<@555555555555555555>
(avatar)A link to the avatar.{user(avatar)}https://cdn.example/avatar.png
(icon)The same link.{user(icon)}https://cdn.example/avatar.png
(created_at)When the account was made.{user(created_at)}2020-02-03 04:05:06
(joined_at)When they joined this server.{user(joined_at)}2025-06-07 08:09:10
(color)The color of their highest colored role. #000000 when they have none.{user(color)}#5989ab
(roleids)The IDs of their roles, lowest first, with spaces between.{user(roleids)}333333333333333333 222222222222222222
(position)How high their top role sits. @everyone is 0.{user(position)}2

The server

BlockWhat it givesExampleResult
{server}The name.{server}Harbor
(id)The ID.{server(id)}333333333333333333
(name)The name.{server(name)}Harbor
(icon)A link to the icon, or nothing when there's none.[{server(icon)}][]
(owner)The owner's username.{server(owner)}owner
(members)How many members it has.{server(members)}4
(bots)How many of them are bots.{server(bots)}1
(humans)How many aren't.{server(humans)}3
(roles)How many roles it has.{server(roles)}2
(channels)How many channels it has.{server(channels)}4
(created_at)When it was created.{server(created_at)}2019-01-01 00:00:00
(random)The username of a random member.{server(random)}ada or grace or owner or bot
(randomonline)Someone from those online. The bot doesn't watch who is online, so this is any member.{server(randomonline)}ada or grace or owner or bot
(randomoffline)Someone from those offline, for the same reason any member.{server(randomoffline)}ada or grace or owner or bot

The channel

BlockWhat it givesExampleResult
{channel}The name.{channel}general
(id)The ID.{channel(id)}444444444444444444
(name)The name.{channel(name)}general
(topic)The topic.{channel(topic)}Say hello
(slowmode)The slowmode delay in seconds.{channel(slowmode)}30
(position)Its place in the channel list.{channel(position)}3
(mention)A link to it.{channel(mention)}<#444444444444444444>

The role, in role triggers

BlockWhat it givesExampleResult
{role}The name of the role that changed.{role}Crew
(id)Its ID.{role(id)}222222222222222222
(name)Its name.{role(name)}Crew
(mention)A mention.{role(mention)}<@&222222222222222222>
(position)How high it sits.{role(position)}2
(is_added)true if it was added, false if it was removed.{role(is_added)}true
(has_elevated_perms)true if it can moderate or manage the server.{role(has_elevated_perms)}false

Conditions

A condition compares two sides with an operator. == and != compare text exactly, capitals included. The others compare numbers.

OperatorTrue whenExampleResult
==The sides are the same text.{if(cat==cat):yes|no}yes
!=They differ.{if(tree!=car):yes|no}yes
>The left number is larger.{if(15>20):yes|no}no
>=Larger or equal.{if(17>=17):yes|no}yes
<The left number is smaller.{if(25<5):yes|no}no
<=Smaller or equal.{if(1<=1):yes|no}yes

In a block with an else, a pipe divides the payload: what's before it comes out when the condition holds, and what's after it when it doesn't. With no pipe, a condition that fails gives nothing. With two or more pipes, the whole payload comes out when it holds.

BlockWhat it givesExampleResult
{if(condition):then|else}The then part or the else part. Stays as written when numbers are compared and one side isn't a number.{if({1}==one):first|other}first
{any(a|b):then|else}The then part when at least one condition holds.{any(1==2|2==2):yes|no}yes
{or(a|b):then|else}The same.{or(1==2|2==3):yes|no}no
{all(a|b):then|else}The then part when every condition holds. A side that isn't a number counts as not holding.{all(1==1|2==2):yes|no}yes
{and(a|b):then|else}The same.{and(1==1|2==3):yes|no}no
{break(condition):text}Nothing here, but when the condition holds the whole output becomes the text. Blocks after it still run.{break(1==1):Only this.} Not this.Only this.
{short(condition):text}The same.{short(1==2):Only this.} This stays.This stays.
{shortcircuit(condition):text}The same.{shortcircuit(1==1):Only this.} Not this.Only this.
{stop(condition):text}When the condition holds, the text, and everything after it in that piece of text is dropped and no later block in it runs. An embed is a separate piece of text and still runs. Otherwise nothing.before {stop(1==1):end} afterbefore end
{halt(condition):text}The same.a{halt(1==2):x}bab

Lists

{list}, {cycle} and {random} read a list split on tildes when there are any, otherwise on commas. Use tildes when an element holds a comma. Counting starts at 0, and a negative number counts back from the end.

BlockWhat it givesExampleResult
{list(n):a,b}Element n, or nothing when n is past the end. A message when n isn't a number.{list(3):red~green~blue~pink}pink
{cycle(n):a,b}Element n, going round again past the end. A message when n isn't a number.{cycle(7):red,green,blue}green
{index(word):words}Where the first copy of a word sits among words split on spaces, or -1.{index(blue):red green blue}2
{in(text):text}true if the parameter appears anywhere in the payload, otherwise false. Capitals count.{in(spam):No spamming}true
{contains(word):words}true if the parameter is one of the words, otherwise false.{contains(spam):No spamming}false

Text

BlockWhat it givesExampleResult
{ord:number}The number with its ordinal ending. Thousands get commas. Anything else comes back unchanged.{ord:8102}8,102nd
{lower:text}The text in lower case.{lower:Tall Ship}tall ship
{upper:text}The text in upper case.{upper:tall ship}TALL SHIP
{join(with):text}The text with each space replaced. The parameter can be empty but has to be there.{join(_):tall ship}tall_ship
{replace(from,to):text}The text with every copy of one string replaced by another. An empty first string puts the second around every character.{replace(oo,ee):Goose Tooth}Geese Teeth
{urlencode:text}The text made safe for a link.{urlencode:a b, c?}a%20b%2C%20c%3F
{urlencode(+):text}The same, with plus signs for spaces.{urlencode(+):a b, c?}a+b%2C+c%3F
{substr(from-to):text}The characters from one position up to another, counting from 0.{substr(1-3):abcde}bc
{substring(from):text}The characters from a position to the end.{substring(2):abcde}cde

Math

{math}, {m}, {+} and {calc} all work out the expression in their payload, in the usual order of operations. Numbers are decimal, so {m:2+2} gives 4.0. Only trunc, round and sgn give whole numbers. An expression that can't be worked out stays as written.

BlockWhat it givesExampleResult
{math:expression}The result.{math:8+9}17.0
{m:expression}The same.{m:5*6}30.0
{+:expression}The same.{+:8/2}4.0
{calc:expression}The same.{calc:7-4}3.0
WrittenWhat it doesExampleResult
a+b, a-b, a*b, a/bAdd, subtract, multiply, divide.{m:1+2*3}7.0
a%bThe remainder.{m:7%4}3.0
a^bTo the power of. Powers group from the right.{m:2^3^2}512.0
abs(x)Without its sign.{m:abs(-3)}3.0
round(x)To the nearest whole number. Halves go to the even neighbor.{m:round(7.8)}8
trunc(x)The decimals chopped off.{m:trunc(8.9)}8
sin(x), cos(x), tan(x)Trigonometry in radians.{m:cos(pi)}-1.0
sinh(x), cosh(x), tanh(x)Hyperbolic versions.{m:cosh(0)}1.0
exp(x)e to the power of x.{m:exp(0)}1.0
sgn(x)1, 0 or -1 by the sign of x.{m:sgn(-5)}-1
log(x)Logarithm, base 10.{m:log(1000)}3.0
ln(x)Natural logarithm.{m:ln(e)}1.0
log2(x)Logarithm, base 2.{m:log2(8)}3.0
pi3.141592653589793{m:pi}3.141592653589793
e2.718281828459045{m:e}2.718281828459045

Random

{random}, {rand} and {#} pick from a list split on tildes or commas. An element written 4|text counts as four copies of that element. Give a seed in the parameter and the same seed picks the same place every time, which is how a tag can give each person a fixed result: {random({user(id)}):Mage,Warrior}. The same seed on a list of another length can land on a different element.

BlockWhat it givesExampleResult
{random:a,b}A random element.{random:red,green}red or green
{random(seed):a,b}The element this seed locks to.{random(7):red,green,blue}blue
{rand(seed):a~b}The same.{rand(7):red~green~blue}blue
{#(seed):a,b}The same.{#(7):red,green,blue}blue
{random:9|a,1|b}A weighted pick.{random(5):9|common,1|rare}common
{range:low-high}A whole number in the range, both ends included. Takes a seed too.{range(7):1-100}92
{rangef:low-high}A number with one decimal in the range. Takes a seed too.{rangef(7):1-2}1.9
{5050:text}The text half the time, nothing the other half.{5050:Hi}Hi or nothing
{50:text}The same.{50:Hi}Hi or nothing
{?:text}The same.{?:Hi}Hi or nothing

Time

All times are UTC. A date is written yyyy-mm-dd HH:MM:SS, and periods work in place of the colons. A number means seconds since 1970.

BlockWhat it givesExampleResult
{strf:format}The time now, in a format.{strf:%A %B %-d, %Y}Friday January 2, 2026
{strf(date):format}A given time, in a format.{strf(1999-12-31 23.59.59):%A}Friday
{td:date}How far away a date is from now, in calendar terms, largest three units.{td:2026-03-01 00:00:00}1 month, 3 weeks and 5 days
{td(date):date}How far apart two dates are.{td(2026-01-01 00:00:00):2026-01-03 12:00:00}2 days and 12 hours

The format codes are the ones on Linux, in English, and the same on every server.

CodeGivesExampleResult
%YThe year.{strf:%Y}2026
%yThe year's last two digits.{strf:%y}26
%mThe month as a number.{strf:%m}01
%BThe month's name.{strf:%B}January
%bThe month's short name.{strf:%b}Jan
%dThe day of the month.{strf:%d}02
%-dThe day, with no leading zero. A dash works with any number.{strf:%-d}2
%eThe day, padded with a space.{strf:[%e]}[ 2]
%AThe weekday's name.{strf:%A}Friday
%aThe weekday's short name.{strf:%a}Fri
%HThe hour, 24-hour clock.{strf:%H}03
%IThe hour, 12-hour clock.{strf:%I}03
%MThe minute.{strf:%M}04
%SThe second.{strf:%S}05
%pAM or PM.{strf:%-I:%M %p}3:04 AM
%jThe day of the year.{strf:%j}002
%sSeconds since 1970.{strf:%s}1767323045
%FThe same as %Y-%m-%d.{strf:%F}2026-01-02
%TThe same as %H:%M:%S.{strf:%T}03:04:05
%xThe date with slashes.{strf:%x}2026/01/02
%XThe same as %H:%M:%S.{strf:%X}03:04:05
%cThe date and time written out.{strf:%c}Fri Jan 2 03:04:05 2026
%^aA caret puts any code in capitals.{strf:%^a}FRI
%%A percent sign.{strf:100%%}100%

Actions

These blocks leave no text behind. They ask the bot to do something when a tag or trigger runs. The order is fixed: require and blacklist decide first, then the output goes out, then reactions, then commands, and the delete comes last.

BlockWhat it doesExampleResult
{delete}Deletes the message that set it off.{delete}GoneGone
{del}The same.{del}GoneGone
{silent}Keeps commands in command blocks from posting. Their errors still show.{silent}DoneDone
{silence}The same.{silence}DoneDone
{override}Commands in command blocks run as if the person held the bot manager role. Role order still applies, and Ban Members stays out of reach. Only counts on a trusted tag or trigger.{override}DoneDone
{dm}Sends the output to the person who ran it, by DM. Nobody else can be the target.{dm}SecretSecret
{redirect:channel}Sends the output to a channel in this server, named by name, ID or mention. Whoever owns the tag or wrote the trigger has to be able to post there, unless it's trusted. With both, the last of this and {dm} wins.{redirect:general}MovedMoved
{require(message):list}Only runs for someone with a listed role, or in a listed channel. Entries are names, IDs or mentions with commas between. If it stops someone, they see the message, or a warning reaction when there's none.{require(Crew only):Crew}WelcomeWelcome
{blacklist(message):list}Refuses someone with a listed role, or in a listed channel.{blacklist(Not here):Staff}WelcomeWelcome
{react:emoji}Reacts to the output. Spaces go between emoji. Paste the emoji itself, or write a server emoji as :name:.{react:👍}DoneDone
{reactu:emoji}Reacts to the message that set it off.{reactu:👍}DoneDone

Embed blocks

These change the first embed the message has, and a message with no embed gets one.

BlockWhat it doesExampleResult
{embed(title):text}Sets the title.{embed(title):Hello}nothing
{embed(description):text}Sets the description.{embed(description):Hello}nothing
{embed(url):link}Sets the title's link. It has to start with http:// or https://.{embed(url):https://example.com}nothing
{embed(color):#hex}Sets the color.{embed(color):#5989ab}nothing
{embed(timestamp):now}Sets the timestamp to now, the only value it takes.{embed(timestamp):now}nothing

Commands

A command block runs one of the bot's commands, written as you'd write it after the prefix, short names included. The output of the tag goes first. Command blocks can't run tags or the tag and reaction role commands, and each tag runs at most five. If the person can't use the command, they get the same error the command would give them.

A tag or trigger starts out untrusted. A tag's command blocks then only run for its owner, nothing in its output pings anyone but the person it moves to the bot channel for, and automod reads what it's about to post. A trigger's command blocks don't run at all, and it only reads and posts in channels whoever wrote it can, so it goes quiet if they leave. The server owner or an Administrator can mark either one as trusted on its page, and it stops being trusted if anyone else changes its text or who can use it. Anyone else who changes a tag's text also becomes its owner, so its command blocks run only for whoever wrote the words.

What a trusted tag or a trigger posts can ping the person who set it off, the person they named, and anyone its own text mentions. Text a member typed pings nobody else.

BlockWhat it doesExampleResult
{command:text}Runs a command with the permissions of the person using the tag or setting off the trigger. It needs a trusted tag or trigger, or that person to own the tag.{command:ping}nothing
{cmd:text}The same.{cmd:ping}nothing
{c:text}The same.{c:ping}nothing
{cmdAdmin:text}On a trusted tag or trigger, runs a command as the bot, with the bot's permissions and place in the role list. Anywhere else it's the same as {command:text}.{cmdAdmin:ping}nothing

Since every complete block runs, an if around a command block doesn't stop it. Put the condition inside, or build the block's name with an if as below.

ExampleResult
{cmd:{if({1}==one):ping|help}}nothing
{=():}{{if({1}==nine):cmd:ping}}nothing

A worked example

This tag greets whoever is mentioned, in an embed, using a random color for anyone whose color is the default, and gives them a role. Its text comes out empty, because every line is a block that leaves nothing.

{=(hello):Welcome aboard, {target(mention)}. You're part of {server} now.}
{=(oops):Mention the person you want to greet.}
{embed(description):{if({user(id)}!={target(id)}):{hello}|{oops}}}
{=(digits):0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
{=(shade):#{#:{digits}}{#:{digits}}{#:{digits}}{#:{digits}}{#:{digits}}{#:{digits}}}
{embed(color):{if({target(color)}==#000000):{shade}|{target(color)}}}
{=():}
{{if({user(id)}!={target(id)}):cmd:role add {target(id)} Crew}}
{silent}

The next tag reads a small table of holidays. Each variable holds three values with pipes between them, and the name comes from what the person typed.

{=(one):Christmas|December 25|a tree}
{=(two):Valentine's Day|February 14|a heart}
{any({1}==one|{1}==two):{{1}(1):|} falls on {{1}(2):|}. Look for {{1}(3):|}.}
Christmas falls on December 25. Look for a tree.

Limits

No template can hang the bot or fill the channel. A run that goes past a limit stops: a tag or trigger then posts nothing and does nothing, and other messages go out with the template left as written.

WhatLimit
Characters in a tag or trigger's text25,000
Characters one block can produce100,000
Characters handled in one run8,000,000
Blocks in one template20,000
Time for one run0.25 seconds
Command blocks that run per tag5
Emoji per tag, for each of react and reactu5
Characters in a math expression5,000
How deep a math expression can nest100 levels
Size of a whole number in math4,096 bits

A server's tags, its triggers and its other messages each have 5 seconds of processing time a minute, and one person has 1 second a minute across all of them. Past either, a tag or trigger does nothing until the next minute, a tag typed in chat gets a warning reaction, and other messages go out with the template left as written.

A tag or trigger that uses its whole 0.25 seconds is stopped for 10 minutes. It stops for everyone when its owner ran it, or once three different people have run it that far. Otherwise only the same text after its name stays stopped. A tag's owner gets a DM and a trigger leaves a note for staff. Changing the words turns it back on.

What comes out gets cut to what Discord accepts: 2,000 characters of text, 4,096 for an embed's description, 6,000 across a message's embeds. A link that doesn't come out as a link is dropped, and so is an embed field left empty, because Discord refuses a whole message over either.

DocsStatusPrivacyTerms