Skip to main content

Suggestions

The Suggestions module provides a community suggestion system with voting (πŸ‘/πŸ‘Ž), Approve/Reject buttons, and optional discussion threads.

Enabling the Module​

  1. Dashboard β†’ Your server β†’ toggle Suggestions
  2. Click Edit and configure the suggestions channel
  3. Save changes

Configuration​

OptionTypeDefaultDescription
channel_idstringβ€”Channel where suggestions are posted (required)
color_pendinghex#3B82F6Pending suggestion embed color
color_approvedhex#22C55EColor after approval
color_rejectedhex#EF4444Color after rejection
create_threadbooleanfalseCreate a discussion thread under the suggestion
anonymousbooleanfalseHide the suggestion author
manage_permissionstring"moderation_roles"Who can approve/reject
manage_roleslist[]Management roles (when permission = "custom")
counternumber0Automatic suggestion counter

Dashboard β€” Configuration​

The edit panel contains:

  • Channel β€” dropdown with text channels
  • Colors β€” three color pickers (pending, approved, rejected)
  • Create Thread β€” checkbox
  • Anonymous β€” checkbox
  • Manage Permission β€” radio: "Moderation Roles" / "Custom Roles"
  • Custom Roles β€” multi-select (visible when "Custom" is selected)

Commands​

/suggest​

Submits a new suggestion.

ParameterRequiredDescription
contentβœ…Suggestion content (max 2000 characters)

Flow:

  1. Bot increments the suggestion counter
  2. Creates an embed with title "Suggestion #X", content, and status "⏳ Pending"
  3. Sends the embed to the configured channel with Approve/Reject buttons
  4. Adds πŸ‘ and πŸ‘Ž reactions for voting
  5. Optionally creates a discussion thread
  6. Sends an ephemeral confirmation to the author
  7. Logs the suggestion creation

Approve / Reject​

Authorized users (see manage_permission) can click:

  • Approve βœ… β€” changes color to green, status to "Approved by [name]"
  • Reject ❌ β€” changes color to red, status to "Rejected by [name]"

After approval/rejection:

  • Buttons are removed from the message
  • Thread (if exists) is archived and locked
  • Moderator receives an ephemeral confirmation
  • Action is logged

Voting​

The πŸ‘ and πŸ‘Ž reactions are used to gather community opinions. The bot adds them automatically, but the count is visible natively through Discord β€” the bot doesn't interfere with the counter.

Anonymous Mode​

When anonymous = true:

  • The embed displays the author as "Anonymous"
  • In logs, the author is still visible (for accountability)

Listened Events​

EventAction
on_interactionHandles Approve/Reject button clicks
Persistent Views

The Approve/Reject buttons use custom_id (not callback) β€” they work even after a bot restart.

Logging​

Actions are logged by Logs under the suggestions category:

  • πŸ’‘ Suggestion Created β€” with number, author, and content (truncated to 200 characters)
  • βœ… Suggestion Approved β€” with number and moderator
  • ❌ Suggestion Rejected β€” with number and moderator

Tips​

Best practices
  • Create a dedicated #suggestions channel with restricted writing permissions (bot only)
  • Enable create_thread so discussions don't clutter the main channel
  • Set manage_permission to "moderation_roles" so moderators can approve/reject
  • Anonymous mode encourages honest feedback but makes moderation harder
warning

The suggestions channel must be configured β€” without it, the /suggest command will return an error. The dashboard also won't allow saving the configuration without a selected channel.