A modern, lightweight Starboard bot for Discord built with Node.js and Discord.js v14.
- Modern Discord.js v14: Uses the latest features and security updates.
- Persistent Memory: Looks back at previous starboard posts to avoid duplicates.
- Image Support: Automatically handles images from attachments and embeds.
- Live Updates: Updates the star count on the starboard message in real-time.
- Date Cutoff: Prevents users from starring ancient messages.
- Node.js 18.0.0 or higher (Recommended: v20 or v24)
- npm (comes with Node)
# Clone the repository
git clone https://github.com/the-jame/discord-starboard.git
cd discord-starboard
# Install dependencies
npm install
# Create your settings file
cp sample-settings.json settings.jsonOpen settings.json and fill in your bot's details:
{
"token": "YOUR_BOT_TOKEN",
"serverID": "YOUR_SERVER_ID",
"channelID": "YOUR_STARBOARD_CHANNEL_ID",
"reactionEmoji": "⭐",
"threshold": 3,
"hexcolor": "d4af37",
"dateCutoff": 30,
"fetchLimit": 100
}For testing:
node app.jsFor production (Recommended): Keep the bot running 24/7 using PM2:
npm install -g pm2
pm2 start app.js --name "Starboard"
pm2 save| Option | Type | Description |
|---|---|---|
token |
String | Your Discord Bot Token (from Developer Portal) |
serverID |
String | The ID of the server the bot is in |
channelID |
String | The ID of the channel where stars will be posted |
reactionEmoji |
String | The emoji the bot should track (usually ⭐) |
threshold |
Integer | Stars required before a message is "boarded" |
hexcolor |
Hex | The color of the embed (e.g., d4af37) |
dateCutoff |
Integer | Max age (in days) for a message to be eligible |
fetchLimit |
Integer | How many messages to scan for duplicates on startup |
- Open Discord Settings.
- Go to Advanced and enable Developer Mode.
- Right-click on your Server Name to "Copy Server ID".
- Right-click on your Starboard Channel to "Copy Channel ID".