EveCogs/support/CHANGELOG.md
Omega Launcher 26b1bf9253 feat(support): add modernized contact/dm system replacing Red core commands
Add comprehensive Support cog that automatically disables and replaces Red's
built-in contact and dm commands with enhanced, feature-rich versions.

Features:
- Command override mechanism (disables core commands on load, restores on unload)
- Multi-category support system with dedicated channels
- Custom emojis, greetings, and descriptions per category
- User blocking/unblocking system
- Comprehensive logging to dedicated log channel
- Anonymous mode for staff replies
- Enhanced embed formatting
- Category selection dropdown UI
- Staff control buttons (Close Thread, Block User)
- Reply modal for staff responses
- Background thread cleanup task

Commands:
- [p]contact - Enhanced contact command (DM only)
- [p]dm - Enhanced DM command with logging
- [p]supportset - 15 admin configuration commands

Documentation:
- README.md - Full documentation (7.9K)
- QUICKSTART.md - Quick setup guide (2.5K)
- EXAMPLES.md - Configuration examples (8.1K)
- TECHNICAL.md - Technical docs (8.6K)
- CHANGELOG.md - Version history
- test_override.py - Override mechanism reference

Technical:
- 625 lines of code
- 33 async functions
- Full type hints
- Config-based data storage
- Red 3.5.0+ compatible
- Follows NexusCore patterns

Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
2026-06-12 17:45:13 +01:00

3.9 KiB

Changelog

All notable changes to the Support cog will be documented in this file.

[1.0.0] - 2026-06-12

Initial Release

Core Features

  • ✅ Replaces Red's built-in contact command with enhanced version
  • ✅ Replaces Red's built-in dm command with enhanced version
  • ✅ Automatic command override system (disables core commands on load)
  • ✅ Automatic restoration (re-enables core commands on unload)

Category System

  • Multiple support categories with dedicated channels
  • Custom emojis per category
  • Custom descriptions per category
  • Custom greetings per category
  • Category selection dropdown UI
  • Default category setting
  • Optional/required category selection

User Features

  • [p]contact <message> - Send messages to staff from DMs
  • Category selection (if multiple categories configured)
  • Custom greeting messages
  • Block status checking
  • Last contact tracking

Staff Features

  • [p]dm <user> <message> - Enhanced DM system
  • Rich user information in messages (roles, join date, ID)
  • Embed formatting for professional appearance
  • Anonymous mode support
  • Logging to dedicated log channel

Admin Commands

  • [p]supportset enable/disable - Toggle system
  • [p]supportset addcategory - Create categories
  • [p]supportset removecategory - Remove categories
  • [p]supportset setemoji - Set category emojis
  • [p]supportset setgreeting - Set category greetings
  • [p]supportset defaultcategory - Set default category
  • [p]supportset logchannel - Configure logging
  • [p]supportset anonymous - Toggle anonymous mode
  • [p]supportset requirecategory - Require category selection
  • [p]supportset embed - Toggle embed formatting
  • [p]supportset showinfo - Toggle author info display
  • [p]supportset list - View all settings
  • [p]supportset block/unblock - User blocking

UI Components

  • Category selection dropdown with emojis and descriptions
  • Support control buttons (Close Thread, Block User)
  • Reply modal for staff responses
  • Persistent views with custom IDs

Configuration

  • Per-guild settings
  • Per-user settings (blocked status, preferences)
  • Active thread tracking
  • Comprehensive logging system

Technical

  • Full async/await implementation
  • Background thread cleanup task
  • Config-based data storage
  • Type hints throughout
  • Error handling for all Discord API calls
  • Permission validation
  • Red 3.5.0+ compatibility

Documentation

  • README.md - Full documentation
  • QUICKSTART.md - Quick setup guide
  • EXAMPLES.md - Configuration examples
  • TECHNICAL.md - Technical documentation
  • CHANGELOG.md - Version history

Command Override Implementation

The cog uses a clean override mechanism:

async def _disable_core_commands(self):
    """Disable Red's built-in contact and dm commands."""
    core_cog = self.bot.get_cog("Core")
    commands_to_disable = ["contact", "dm"]
    for cmd_name in commands_to_disable:
        cmd = self.bot.get_command(cmd_name)
        if cmd and cmd.cog_name == "Core":
            cmd.enabled = False

Known Limitations

  • Users must be in the server to use contact (by design)
  • DMs must be enabled for user to receive replies
  • Maximum 25 categories (Discord dropdown limit)
  • Thread cleanup runs every 5 minutes (configurable in code)

Future Considerations

Potential features for future versions:

  • Rate limiting
  • Priority queues
  • Auto-responses
  • Ticket numbers
  • Transcript generation
  • Staff assignments
  • Analytics

Version Numbering

This project follows Semantic Versioning:

  • MAJOR version for incompatible API changes
  • MINOR version for new functionality in a backward compatible manner
  • PATCH version for backward compatible bug fixes

Release Notes Format

Each version includes:

  • Added - New features
  • Changed - Changes to existing functionality
  • Deprecated - Soon-to-be removed features
  • Removed - Removed features
  • Fixed - Bug fixes
  • Security - Security vulnerability fixes