Skip to content

Feature: Channel-level quiet mode via bot mention #173

@BillChirico

Description

@BillChirico

Summary

Add a "quiet mode" feature where users can temporarily silence the bot in a specific channel by mentioning it with a command like @Bot quiet.

Proposed Behavior

Command

  • Mention the bot with keywords like: quiet, shush, silence, stop
  • Example: @Volvox Bot quiet for 30 minutes

Permissions (Configurable)

  • Default: Moderator role required
  • Configurable via web dashboard: Can be set to "Anyone", "Moderator", or "Admin"
  • Setting path: config.quietMode.allowedRoles — array of role IDs, or ["any"] for everyone
  • Respects existing permission system (permissions.moderatorRoleId, permissions.adminRoleId)

Web Dashboard Configuration

New section in config editor:

{
  "quietMode": {
    "enabled": true,
    "allowedRoles": ["moderator"], // Options: ["any"], ["moderator"], ["admin"], or specific role IDs
    "defaultDurationMinutes": 30,
    "maxDurationMinutes": 1440
  }
}

UI Controls:

  • Toggle: Enable/Disable quiet mode feature
  • Select: Who can use it (Anyone / Moderator / Admin / Specific Roles)
  • Number input: Default duration (minutes)
  • Number input: Maximum allowed duration (minutes)

Duration

  • Default: 30 minutes (configurable in dashboard)
  • Max: 24 hours (configurable in dashboard)
  • Format: @Bot quiet [for] [X] [minutes/hours]

Scope

  • Per-channel only — does not affect other channels
  • Bot continues to work normally in other channels
  • Does not affect DM conversations

Restoration

  • Automatically resume after duration expires
  • Manual restore: @Bot unquiet or @Bot resume
  • Shows remaining time if asked: @Bot status

Storage

  • Store active quiet modes in Redis/memory with TTL
  • Key format: quiet:{guildId}:{channelId}
  • Value: { until: timestamp, by: userId }

Use Cases

  • Meeting/channel-specific discussions where bot responses are distracting
  • Temporary focus periods (code reviews, announcements)
  • Community moderation without full bot disable

Acceptance Criteria

  • Bot recognizes quiet/unquiet commands via mention
  • Validates user has permission based on config.quietMode.allowedRoles
  • Parses duration (respects default/max from config)
  • Stores quiet state per-channel with expiration
  • Resumes normal operation automatically after expiry
  • Responds with confirmation message when quiet mode is set/removed
  • Ignores all non-command messages during quiet period (except unquiet/status)
  • Web dashboard UI for configuring permissions and defaults
  • Config validation in configValidation.js
  • Added to configAllowlist.js for web editing

Related

  • Permission system: permissions.moderatorRoleId
  • Existing mute/timeout features for comparison
  • Web dashboard config editor

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions