All commands use your prefix, alert. by default — changeable with setprefix. Run commands in a channel the bot can read; most write a copy of the result to your log channel (see setlog).
First commands
After installation, in your admin channel:
| Command | What it does |
|---|---|
alert.setup | Claims ownership (first run) and creates a starter channel layout: an admin category with chat-command, test channels for bc0 (one per relay mode), a preview channel, and a bot-logs channel. |
alert.setup-client | Creates a destination-server channel layout: an info category with subscriber channels (rector-bot-info, daily-analysis, education, crypto-calls, nft-calls, daily-news). Run this in each community server that receives alerts. |
alert.setlog #bot-logs | Points the bot's log channel where operational messages are mirrored. |
alert.showgroup | Lists your broadcast groups. |
Ownership: a fresh database has no administrator. The first person to run
alert.setupbecomes the owner. Afterwards, all admin/config commands are restricted to the owner and any additional IDs they register.
Access control
Two tiers exist:
- Everything except
helpis gated to the access list: the owner plus additional user/team IDs held in the bot'sbot_id_listconfiguration. Read-only informational commands (servers,resource,guildroles,invite,botstatus,showgroup) are no exception — they are also restricted, just without making changes. - Owner-only, even within the access list:
setexpired,toggle,help-hidden, andreload(which additionally accepts the primary operator ID). helpworks for anyone in a channel the bot can read.
Broadcast groups
Groups are named bc0, bc1, bc2, … Each group holds source channels (what gets relayed) and destination channels (where it goes), with four relay modes selectable per group: ep (embed + role ping), enp (embed, no ping), np (plain text + ping), nnp (plain text, no ping).
| Command | Arguments | Notes |
|---|---|---|
addgroup | — | Creates the next bcN. Asks you to type a short confirmation code within 15 seconds. |
removegroup | — | Removes the highest-numbered group, with the same confirmation step. |
showgroup | — | Lists all groups. |
setsource | <bcN> <ep|enp|np|nnp> <#channel or channel ID> | Sets the group's source channel for that relay mode. Example: alert.setsource bc0 ep #say-ep. |
setgroupname | <bcN> <new name> | Gives a group a display name (shown in bot output). |
Destinations
Add destination channels to a group; each can carry its own ping role. Channels can be mentioned or given by ID, and may live in any server the bot is in.
| Command | Arguments | Notes |
|---|---|---|
add | <bcN> <#channel> [#role] | Adds a destination. Without a role, pings default to @everyone. Example: alert.add bc0 #premium-alerts @Members. |
setrole | <bcN> <#channel> <#role> | Changes the ping role of an existing destination. |
remove | <bcN> <#channel> | Removes a destination. |
show | <bcN> | Lists the group's destinations, their servers, and ping roles. |
Subscriptions and expiry
| Command | Arguments | Notes |
|---|---|---|
setexpired | <unix timestamp> | Owner only. Sets the subscription end date (get timestamps at unixtimestamp.com). Two automatic checks run every 8 hours: a warning while the date approaches, and an expired notice afterwards. When expired, command access is restricted to the owner until the date is extended. |
botstatus | — | Shows the current expiry date and days remaining. |
White-label identity
Make the bot look like your own product. Discord rate-limits some of these (usernames can't change more than once every two hours).
| Command | Arguments | Sets |
|---|---|---|
setusername | <new username> | Bot display name. |
setpfp | (attach an image to the same message) | Bot avatar. |
setfooter | <footer text> | Footer text on relayed embeds. |
seticon | <icon URL> | Footer icon on relayed embeds. |
setwebsite | <url> | Website link used in bot output. |
setembedcolor | <hex color, 6 chars, no #> | Default embed color, e.g. alert.setembedcolor 75008b. Sends a sample embed so you can preview. |
Embed button: relayed embeds can carry a clickable button. Its text, link, and emoji are held in the bot's database (button_text, button_link, button_emoji) and set during onboarding or by direct database edit.
Command interface
| Command | Arguments | Notes |
|---|---|---|
setprefix | <new prefix> | Changes the command prefix, e.g. alert.setprefix crypto.. Pick something short; a trailing dot reads well. |
Feature toggles
| Command | Arguments | Notes |
|---|---|---|
toggle | [number] | Owner only. With no argument, lists every toggleable feature and its ON/OFF status. alert.toggle 3 flips feature #3. |
Auto-react, keyword colors, and signal routes
Three behaviors are stored in the bot's database rather than driven by chat commands. They are typically configured during onboarding (we help you set them), or by direct database edits:
- Auto-react rules — an emoji plus matching keywords; the bot reacts to destination messages containing a tracked word. Specific channels can be blocked from auto-react.
- Keyword embed colors — map keywords to hex colors; relayed embeds whose source message matches a keyword are sent in that color.
- Signal routes — additional point-to-point channel routes (source → destination) with their own log channel, separate from broadcast groups.
Help content and command aliases
The help text for the four destination commands (add, setrole, remove, show) is stored in the database (command_content) together with each command's alias. Defaults ship with the product; edit the database rows to customize wording or aliases.
Ops commands
| Command | Arguments | Notes |
|---|---|---|
servers | — | Lists the servers the bot is in. |
resource | — | Reports the host's resource usage. |
guildroles | [guild ID] | Lists roles in a server (defaults to the current one) — handy for finding role IDs. |
invite | — | Prints the bot's invite URL. |
leaveguild | [guild ID] | Makes the bot leave a server (asks for confirmation). |
recall | — | Deletes the most recent broadcast in every destination channel of the current session and reports where. |
backup | <bcN> | Dumps a group's configuration as a JSON file attachment. |
reload | — | Owner/operator only. Reloads configuration from the database without a restart. |
help | — | Shows the command list. help-hidden shows extra entries. |
Updating
- Download the new release tarball from the distribution repository.
- Extract and replace the binary in
/opt/rector-bot-alert. sudo systemctl restart alertbot
Database schema updates apply automatically on boot — no manual steps.
Backups
Two layers:
-
Database: run
pg_dumpon a cron schedule. Example daily dump from the bot's directory:sudo docker compose exec -T postgres pg_dump -U alertbot alertbot | gzip > /var/backups/alertbot-$(date +%F).sql.gz -
Broadcast groups: the built-in
backup <bcN>command exports one group's configuration as JSON — useful for sharing or archiving a single group.
Importing data from our hosted era
If you were previously hosted by us, we provide a database dump as part of your purchase. Restore it before (or any time after) first boot:
pg_restore -U alertbot -h 127.0.0.1 -p 5433 -d alertbot --clean --if-exists dumpfile.dump
Then restart the service. Your groups, destinations, and settings come across intact.
What is not configurable
- Relay-mode semantics (
ep/enp/np/nnpbehavior). - The command set — what commands exist and what they do.
- The license binding to your Discord application ID.
Features change only through our releases (see Updating).