Docs/Plugins

Suggestions plugin

Community suggestion queue with staff review, persistent vote buttons, display statuses, blocks, and dashboard triage. Inspired by common Discord suggestion bots, stored in Dreamliner’s database so votes and queue state survive restarts.

#Modes

ModeBehavior
review (default)Submissions go to review_channel_id with Approve / Deny controls first
autoapproveSubmissions post straight to suggestions_channel_id with vote buttons

#Configuration

yaml
plugins:
  suggestions:
    enabled: true
    config:
      mode: review
      suggestions_channel_id: "1234567890123456789"
      review_channel_id: "9876543210987654321"
      denied_channel_id: ""
      archive_channel_id: ""
      log_channel_id: ""
      allowed_suggest_roles: []
      blocked_suggest_roles: []
      allowed_vote_roles: []
      review_ping_role: ""
      feed_ping_role: ""
      approved_role: ""
      implemented_role: ""
      anonymous: false
      cooldown: "1h"
      max_open: 5
      min_messages: 25
      min_account_age: "7d"
      min_member_age: "1d"
      command_channels: []
      ignored_channels: []
      allow_attachments: true
      min_length: 15
      max_length: 1000
      voting_enabled: true
      upvote_label: Upvote
      midvote_label: Neutral
      downvote_label: Downvote
      upvote_emoji: "👍"
      midvote_emoji: "😐"
      downvote_emoji: "👎"
      mid_vote_enabled: true
      allow_self_vote: false
      show_vote_count: true
      color_change_threshold: 10
      color_change_color: 5763719
      notify_author: true
      follow_on_upvote: true

#Channels and roles

FieldDescription
suggestions_channel_idPublic feed for approved suggestions (required for posting)
review_channel_idStaff queue channel (required in review mode)
denied_channel_idOptional channel for denied suggestion posts
archive_channel_idOptional archive when a suggestion is marked implemented
log_channel_idOptional channel for staff action logs
review_ping_roleRole pinged when a suggestion enters the review queue
feed_ping_roleRole pinged when a suggestion is posted to the feed
approved_roleOptional role granted to the author on approve
implemented_roleOptional role granted when marked implemented

#Eligibility and content

FieldDescription
allowed_suggest_rolesIf non-empty, only these roles may submit
blocked_suggest_rolesRoles that cannot submit
allowed_vote_rolesIf non-empty, only these roles may vote
anonymousAllow anonymous submissions (staff still see the author)
cooldownWait between submissions per user. Empty string disables
max_openMax open approved (not implemented) suggestions per user. 0 = unlimited
min_messagesMinimum tracked guild messages before suggesting
min_account_age / min_member_ageAge gates. Empty string disables
command_channelsIf non-empty, /suggest may only be used in these channels
ignored_channelsChannels where suggestion commands are refused
allow_attachmentsAllow image attachments on suggestions
min_length / max_lengthSuggestion text length bounds

#Voting and notifications

FieldDescription
voting_enabledShow vote buttons on approved feed posts
upvote_label / midvote_label / downvote_labelButton labels
upvote_emoji / midvote_emoji / downvote_emojiButton emojis
mid_vote_enabledInclude a neutral mid vote button
allow_self_voteAllow authors to vote on their own suggestion
show_vote_countShow live vote totals on the vote buttons
color_change_thresholdNet upvotes needed to recolor the embed. 0 disables
color_change_colorEmbed color (decimal 0-16777215) once the threshold is met
notify_authorDM the author on approve, deny, and mark when possible
follow_on_upvoteAuto-follow a suggestion when a member upvotes it

Set enabled: false on the plugin section to turn suggestions off without removing your settings.

#Commands

#Members

CommandPermissionDescription
/suggestcan_suggestOpen the suggestion form (anonymous option when enabled)
/suggestion infocan_infoShow a suggestion by number
/suggestion topcan_topTop or bottom suggestions by votes
/suggestion follow add / remove / listcan_followFollow suggestions for update DMs

#Staff

CommandPermissionDescription
/suggestion approvecan_approveApprove a queued suggestion
/suggestion denycan_denyDeny with an optional public reason
/suggestion silentdenycan_denyDeny without notifying the author
/suggestion dupecan_denyDeny as a duplicate of another suggestion
/suggestion markcan_markSet display status (see below)
/suggestion delete / silentdeletecan_deleteRemove a suggestion
/suggestion queuecan_manageList suggestions awaiting review
/suggestion massapprove / massdenycan_manageAct on multiple IDs at once
/suggestion searchcan_infoSearch by text, number, status, or author
/suggestion block / unblock / blocklistcan_blockBlock users from suggesting (optional duration)

Grant can_suggest, can_vote, can_follow, can_info, and can_top to a Dreamliner Role on the dashboard's Roles page (or /permissions role grant) to open member-facing commands — the built-in Member role is a good place for these. Grant can_approve, can_deny, can_mark, can_delete, can_block, and can_manage to your Moderator/Admin roles for the staff commands. See permissions.md.

#Voting

Approved suggestions get persistent Discord buttons. Votes are stored in SQLite and survive bot restarts. Changing your vote replaces the previous value. Configure labels, mid-vote, self-vote, role allowlists, and color thresholds in plugin config.

#Display statuses

Use /suggestion mark after approval:

ValueLabel
noneNone
consideredIn consideration
progressIn progress
implementedImplemented
noNot happening

Marking implemented can move the post to archive_channel_id and optionally grant implemented_role.

#Dashboard

Feedback → Suggestions shows Queue / Approved / Denied with approve, deny, mark, and delete actions. Plugin settings live under Feedback → Suggestions on the dashboard.

#Requirements

  • The bot needs Send Messages, Embed Links, and permission to use components in the feed and review channels.
  • In review mode, both suggestions_channel_id and review_channel_id should be set.
  • Message-count eligibility uses Dreamliner’s tracked guild messages.

#Setup

  1. Create #suggestions and, for review mode, #suggestion-review channels.
  2. Open the dashboard with /config.
  3. Set mode, channel IDs, and eligibility fields under plugins.suggestions.config, then Save.
  4. Members use /suggest. Staff triage in Discord or on the dashboard.