// guide / admin

05

Power-user admin

Less common, more powerful admin operations.

01

Cycle the bot instance

Cycling is the "turn it off and on again" of the bot. It triggers an Auto Scaling Group instance refresh: AWS spins down the running instance, brings up a fresh one, and the bot reconnects to Discord on the new box. You will reach for this rarely. Most updates ship through CodeDeploy without requiring a cycle. The two situations where a cycle helps are after an operational change that needs the bot to re-boot (a CDK deploy that bakes new infrastructure), and when you have been chasing a misbehaviour and have ruled out the usual suspects.

  1. Run the cycle command in any channel the bot can see:
    /admin cycle
    The bot acknowledges in the channel and, if you have an announce channel configured, posts a short "cycling now" notice there too.
  2. Wait about 2 to 3 minutes. The old instance drains, the new instance launches off the latest custom AMI, the systemd service starts, and the bot logs back into Discord. You will see it come back online in the member list when it is ready.
  3. Confirm the new instance booted clean by running a smoke command:
    /info ping
    A reply means the gateway is healthy. If the announce channel is configured, the bot also posts a fresh startup banner (version, instance ID, guild count) so you have a written record of which build is running.

Tip. Cycles are rare. Most updates ship via CodeDeploy without requiring a cycle. Reach for it when you have already ruled out everything else.

02

Configure announce channel modes

The announce channel is where the bot posts operational events: startup banners, cycle notices, version changes. You picked this in the setup stage; here is the full reference for the modes and how to flip between them. The choice is per-guild. There is no global default; each guild that wants announcements opts in by pointing at a channel.

  1. Custom mode sends announcements to a channel you pick. This is the normal "on" state:
    /admin announce-channel mode:custom channel:#bot-announcements
    Bot announcements now post in #bot-announcements. Re-running the same command with a different channel switches the destination without any other ceremony.
  2. Off mode suppresses every operational announcement for the guild. Use this if you do not want to see startup banners or cycle notices anywhere:
    /admin announce-channel mode:off
    The bot still boots and cycles as normal; it just stays quiet about it in your guild.
  3. No configuration at all is the implicit default for a freshly invited bot. You get no announcements until you opt in. That is intentional. Most guilds do not need to see infrastructure messages, so silence is the right default.

The command requires Manage Server on your account. Per-guild operational config belongs to the people running the guild, not to the bot owner.

03

Scheduled channel announcements

Scheduled messages let a mod queue the bot to post in a channel later — once, or on a repeating cadence. It is the tool for "remind everyone of the rules every Monday" or "announce the event at 7pm Friday" without anyone having to be around to hit send. These post to a channel and require Manage Messages, which is what separates them from the personal reminders any member can set in the engagement stage.

  1. Schedule a one-shot at an exact time, in your saved timezone:
    /schedule once when:"2026-06-13 19:00" channel:#events message:"Movie night starts now in voice."
    The bot posts the message in that channel at that time, then forgets about it.
  2. Schedule a recurring post daily, weekly, or monthly:
    /schedule recurring frequency:weekly day:monday time:09:00 channel:#general message:"Weekly check-in — how is everyone doing?"
    For weekly pass a weekday in day; for monthly pass a day number from 1 to 28; for daily, day is ignored. Times are HH:MM in your timezone, and the bot re-schedules itself after each fire.
  3. List, edit, and cancel what is queued:
    /schedule list
    /schedule edit id:<id> time:10:00
    /schedule cancel id:<id>
    /schedule list shows every active schedule with its short ID, cadence, and target channel; edit and cancel take that ID, with autocomplete. When you change a recurring schedule's cadence, supply the frequency, time, and day together.

Weekly schedules take a single day, a comma-separated set (mon,wed,fri), or the presets weekdays and weekends — so a weekday-only daily post is one schedule, not five.

Set your timezone once with /util set-timezone so every scheduled time is interpreted correctly. You can keep up to 25 one-shot schedules and 5 recurring ones active per server. The bot checks it can post in the target channel when you create the schedule, so a permissions problem surfaces immediately rather than silently at fire time.

Tip. Monthly schedules only accept days 1–28 on purpose, so a 'post on the 30th' rule can't silently skip February. If you need end-of-month timing, the closest safe choice is the 28th.

04

Translation utility

The translate tool is a one-shot text translator. Paste content, get back the same content in another language. Backed by Claude Haiku, so it is fast and cheap. The default target is English, which is what you want most of the time when something lands in your guild that nobody can read. You can pick a different target language with the target option.

  1. Translate any text to English by passing it as content:
    /util translate content:"some text"
    The bot auto-detects the source language and replies with the English translation. No source-language flag required.
  2. Pick a different target language with a two-letter language code:
    /util translate content:"some text" target:fr
    Common targets: en, es, fr, ja, de, pt. Any ISO 639-1 code Haiku recognises works.
  3. Drop in an X (Twitter) URL and the tool routes through fxtwitter instead of trying to scrape the page itself:
    /util translate content:https://x.com/someone/status/1234567890
    The bot fetches the tweet text via fxtwitter, then runs the same Haiku translation pass. This is how you handle "what does this tweet say?" without copy-pasting the body yourself.

Translation used to auto-fire on every tweet linked in a channel. That behaviour was removed because it misbehaved intermittently. The current model is explicit: you ask, the bot translates. That covers the same use case without the noise.

05

Other utility tools

The /util group also ships two small conveniences that come up often enough in technical guilds to be worth a slash command. Neither does anything magical; they are just faster than the alternatives.

  1. Pretty-print JSON when someone pastes a wall of minified output and you want to read it:
    /util json content:"<paste>"
    The bot reformats the input with indentation and posts it back in a code block. Useful for API responses, config files, and "is this even valid JSON?" sanity checks.
  2. Check the current time across timezones:
    /util time
    The bot replies with the current UTC time and, if your Discord locale is set, your local time alongside it. Quick way to confirm "is it actually 2am for the person I am pinging?" before sending a non-urgent message.

06

Send feedback to the bot owner

The feedback command is the one-way channel from you to the bot owner. Use it for bug reports, feature requests, or anything in the "this thing broke" bucket. There is no inbox you read back; submissions go to a private log the owner sees, and any follow-up happens out of band. Treat it as fire-and-forget.

  1. Submit feedback from any channel the bot can see:
    /feedback message:"<text>"
    The bot acknowledges in the channel with a short confirmation and writes your message to the owner's feedback log along with your user ID and the guild it came from.
  2. Pick the right tool for the right report. Use feedback for bot issues: a tool that returned the wrong answer, a feature you wish existed, a confusing reply you did not expect. Do not use it for guild moderation issues; those are local to your guild and the bot owner cannot help with them.
  3. Do not expect a reply through Discord. The bot does not accept direct messages, and there is no per-feedback response thread. If your report needs follow-up, the owner reaches out through whichever channel they normally use (the support guild, GitHub issues, or whatever is configured).

Continue your tour