How it works
- A member reacts to a message with the configured emoji (default: any emoji via wildcard
*). - The bot counts qualifying reactions, excluding the message author’s own reaction if self-starring is disabled.
- When the count reaches
threshold, the bot posts an embed to the starboard channel. - If reactions are added or removed, the embed is updated in place.
- If the count drops below
threshold, the starboard post is deleted.
Configuration
config.json
enabled to true and provide a channelId to activate.
Fields
| Field | Type | Default | Description |
|---|---|---|---|
enabled | boolean | false | Enable or disable the starboard |
channelId | string | null | Channel ID where starred messages are posted |
threshold | number | 3 | Minimum reactions to trigger a starboard post |
emoji | string | "*" | Emoji to watch, or "*" for any emoji |
selfStarAllowed | boolean | false | Whether the message author’s own reaction counts |
ignoredChannels | string[] | [] | Channel IDs excluded from starboard tracking |
Emoji configuration
| Value | Behavior |
|---|---|
"*" | Wildcard — tracks any emoji, picks the one with the highest count |
"⭐" | Tracks only the ⭐ emoji |
"<:name:id>" | Tracks a specific custom emoji |
Self-star prevention
WhenselfStarAllowed is false (the default), the bot fetches up to 100 reactors and subtracts 1 from the count if the message author is among them. The check is skipped if fetching reactors fails — in that case the full count is used.
Ignored channels
Messages inignoredChannels are never posted to the starboard, even if they exceed the threshold. The starboard channel itself is always excluded to prevent feedback loops.
config.json
Starboard embed
Each starboard post contains:- Author — display name and avatar of the original message author
- Content — the message text (if any)
- Image — the first image attachment or embed image from the original message
- Source — link to the original channel
- Stars — emoji and count
- Jump — direct link to the original message
- Timestamp — when the original message was sent
Database deduplication
The bot tracks starboard posts in astarboard_posts table keyed by the source message ID. When a post already exists:
- If the count increased — the existing embed is edited in place.
- If the count dropped below
threshold— the embed is deleted and the database record is removed. - If the starboard message was manually deleted — the bot reposts it and updates the record.