utilities & info.
the small commands people use every day.
afk status and mentions
afk saves a status and tries to add [afk] to your nickname. if havoc cannot change the nickname, the status is still active. mentioning an afk member records a link for them, and speaking again clears their afk state without overwriting a nickname someone changed in the meantime.
| command | what it does | needs |
|---|---|---|
| /afk [status] | set or update your afk status; the default is “away” | anyone |
| /afk mentions | show accessible mention links saved during the last 30 days | anyone |
,afk back after lunch
/afk mentionsstatuses may be up to 500 characters. havoc retains at most the latest 50 mention records and only displays records from channels where you can currently view the channel and read message history.
member and server lookups
these commands are available to everyone and read current discord data. omitting the member from avatar or user looks up the caller.
| command | what it does | needs |
|---|---|---|
| /avatar [member] | return the member’s current display avatar url; alias: av | anyone |
| /user [member] | show display name, id, creation and join dates, and role count; alias: userinfo | anyone |
| /serverinfo | show server id, owner, counts, and creation date; alias: si | anyone |
use ids when names are ambiguous. avatar returns a direct media url rather than reposting the file, while user and server information are compact text intended for quick checks.
bot status and navigation
| command | what it does | needs |
|---|---|---|
| /ping | show current discord gateway latency | anyone |
| /uptime | show time since this bot process started | anyone |
| /stats | show library version, server count, command count, and local persistent jobs | anyone |
| /botinfo | show the same bot runtime information | anyone |
| /invite | create an oauth link for the bot and application commands | anyone |
| /help [category or command] | list categories or show live usage, aliases, and access requirements | anyone |
,help utility
,help reactionhistory
/utility ping
/help query: embed edituptime resets when the process restarts; it is not the age of the bot account. the invite link itself requests no broad bot permissions, so server administrators can grant only the permissions needed by the modules they use.
recent deleted and changed messages
snipes are short-lived, in-memory records for the current channel. each cache holds up to 30 deleted messages, edits, and removed reactions, and entries expire after one hour. index 1 is the most recent record; higher indexes walk backward.
| command | what it does | needs |
|---|---|---|
| /snipe [index] | view a recently deleted message in this channel | channel access |
| /editsnipe [index] | view a recent message edit in this channel | channel access |
| /reactionsnipe [index] | view a recently removed reaction in this channel | channel access |
| /reactionhistory <message link> | list cached removed reactions belonging to one message | manage messages |
| /clearsnipe | clear all three snipe caches for this channel | manage messages |
callers must be able to view the channel and read its message history. reactionhistory accepts a discord message link and filters the cached reaction removals to that message.
entries disappear after an hour, on process restart, when an active-channel cache is evicted, or when staff run clearsnipe. use logging for a durable moderation record. clearing affects only the current channel and cannot be undone.
sending exact text
say sends plain text as havoc with all mentions disabled. by default it posts in the current channel. a leading channel mention chooses another channel in the same server, and --replysearches that channel’s latest 100 messages for the named user and replies to the newest match.
| command | what it does | needs |
|---|---|---|
| /say [#channel] [--reply userid] <message> | send 1–2000 characters to a channel where both caller and bot can post | manage messages |
,say #announcements Maintenance starts in ten minutes.
,say #support --reply 123456789012345678 Please include the error text.the reply id must be numeric. reply lookup additionally needs read message history for both havoc and the command runner. if no recent message from that user is found, nothing is sent.
writing embed json
embed commands accept one nonempty json object. use a fenced json block or compact json after the command. the top-level properties below are the complete accepted set; unknown properties are rejected.
- ::title, description, url, color, timestamp
- title is limited to 256 characters, description to 4096, urls must be public http or https, color is a hex value, and timestamp must be an ISO-style discord timestamp.
- ::author
- an object with required
nameand optionalurlandicon_url. - ::footer
- an object with required
textand optionalicon_url. - ::image, thumbnail
- an object containing a required public
url. - ::fields
- an array of at most 25 objects with
name,value, and optional booleaninline.
,embed create {"title":"status","description":"services are online","color":"#5865f2","fields":[{"name":"region","value":"us-east","inline":true}],"footer":{"text":"updated by staff"}}field names are limited to 256 characters and values to 1024; footer text allows 2048. all embed text together is limited to 6000 characters, and the object needs visible content. embed json does not substitute placeholder variables: text such as {user} remains literal here.
creating and editing embeds
| command | what it does | needs |
|---|---|---|
| /embed <json> | validate and post an embed in the current channel | manage messages |
| /embed create <json> | the explicit create form; alias: createembed | manage messages |
| /embed edit <message link> <json> | replace an embed previously sent by havoc; alias: editembed | manage messages |
havoc needs send messages and embed links to create an embed, and embed links in the target channel to edit one. editing accepts only a message authored directly by havoc, not a webhook message. it replaces the existing embed with the validated object.
json requires double quotes around property names and string values. a trailing comma, a single-quoted value, a private or credential-bearing url, or an unsupported property causes validation to stop before the message is sent or edited.
