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

130 lines
3.9 KiB
Markdown

# 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:
```python
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](https://semver.org/):
- 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