Modules (Cogs)

Suggestions

The Suggestions module provides a community suggestion system with voting (👍/👎), Approve/Reject buttons, and optional discussion threads.

Enabling the Module

Enable the module

Dashboard → Your server → toggle Suggestions

Configure the channel

Click Edit and configure the suggestions channel

Save

Save changes

Configuration

OptionTypeDefaultDescription
channel_idstringChannel 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
contentSuggestion 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

Channel Required

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.