This project is a Discord bot built with Go and discordgo. Users can associate multiple emojis with different bookmark modes and, when they react to a message with one of those emojis, the bot forwards the message to their DMs or a chosen channel with the appropriate layout and controls.
- React with an emoji to file a message into your DMs or a shared channel with tailored layouts.
- Pick between quick, balanced, or full-detail bookmark styles with custom colors.
- Schedule reminders and decide whether they clear when you mark a bookmark as done.
- Add, list, and remove emoji shortcuts with slash commands.
- Go 1.20+
- Discord Bot Token / Application ID
- Docker (optional)
| Name | Description |
|---|---|
DISCORD_TOKEN |
Bot token |
DISCORD_APP_ID |
Application ID |
DISCORD_GUILD_ID |
(Optional) Guild ID to register the command. Empty registers globally |
BOOKMARK_STORE_PATH |
(Optional) Path to persist user bookmark settings. Defaults to bookmarks.json |
REMINDER_STORE_PATH |
(Optional) Path to persist scheduled reminders. Defaults to reminders.json |
Use .env.example as a reference when configuring the environment.
go run ./cmd/botdocker compose up --build/set-bookmarklets you choose an emoji, assign it to one of three bookmark modes, and optionally pick an embed color./list-bookmarksshows the emojis you have configured and their associated modes and colors./bookmark-helpprovides a quick reference for the available commands and how to use them.- Reacting with any registered emoji forwards the message to your DMs or selected channel using the configured mode (lightweight, balanced, or complete).
- Saved messages include action buttons:
- ✅ Done — Marks the bookmark as complete (dims the message, adds ✅ to title, removes buttons). The reminder is removed by default unless
keep-reminder-on-complete:truewas set. - 🗑️ Remove — Completely deletes the bookmark message and cancels any associated reminder.
- 🔗 Source — Link button to jump to the original message (Complete mode only).
- ✅ Done — Marks the bookmark as complete (dims the message, adds ✅ to title, removes buttons). The reminder is removed by default unless
The bot registers the slash command automatically when it starts, so no additional registration command is required.
Use the following format when customising the bookmark behaviour:
/set-bookmark emoji:👀 mode:lightweight color:#FFD700
/set-bookmark emoji:🔖 mode:balanced
/set-bookmark emoji:📌 mode:complete color:#FF6B6B
/set-bookmark emoji:⏰ mode:lightweight reminder:8:00
/set-bookmark emoji:⏰ mode:lightweight reminder:45m keep-reminder-on-complete:true
/set-bookmark emoji:📣 mode:balanced destination:channel destination-channel:#project-updates
/remove-bookmark emoji:👀
/list-bookmarks
/bookmark-help
- Provide exactly one emoji per command execution. Custom server emojis are supported as usual (e.g.
<:name:123456>). - Choose between
lightweight,balanced, orcompletefor themodeoption. - The optional
colorargument accepts a 6-digit hex value with or without#/0xprefixes. Leave it out to fall back to the bot default. - Use the optional
destinationargument to choose betweendmandchannel. When usingchannel, also providedestination-channeland pick from the shared servers. - Use the optional
reminderargument to schedule a reminder for each saved message. Supply either a time of day such as08:00or a duration like30m/2h. - When a reminder is set the saved DM includes the next reminder time, and every reminder is delivered to your DMs even if the bookmark was posted in a channel. Reminders can be cleared with
reminder:none. - Add
keep-reminder-on-complete:trueif you want the reminder to remain active after pressing the ✅ Done button. By default the reminder is removed when the bookmark is marked as complete.