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>
277 lines
7.9 KiB
Markdown
277 lines
7.9 KiB
Markdown
# Support
|
|
|
|
A modernized DM/contact system that **replaces Red's built-in `contact` and `dm` commands** with enhanced features including categories, channels, custom greetings, logging, and more.
|
|
|
|
> **⚠️ Important:** When loaded, this cog **automatically disables** Red's core `contact` and `dm` commands, replacing them with its own enhanced versions. The core commands are re-enabled if you unload this cog.
|
|
|
|
## Features
|
|
|
|
### Core Features
|
|
- 🎯 **Category System** - Organize support messages by department/topic
|
|
- 📂 **Custom Channels** - Route different categories to specific channels
|
|
- 💬 **Enhanced DM System** - More powerful than the built-in dm command
|
|
- 🔒 **User Blocking** - Block abusive users from contacting staff
|
|
- 📝 **Logging** - Track all support interactions in a dedicated log channel
|
|
- 🎨 **Customizable** - Custom greetings, emojis, and messages per category
|
|
|
|
### Advanced Options
|
|
- 👻 **Anonymous Mode** - Hide staff names in replies
|
|
- 📋 **Category Selection** - Optional or required category selection
|
|
- 💎 **Embed Replies** - Beautiful embed formatting for messages
|
|
- ⏱️ **Thread Timeout** - Auto-close inactive support threads
|
|
- 🎭 **Role Permissions** - Category-specific staff roles
|
|
|
|
## Installation
|
|
|
|
```
|
|
[p]repo add evecogs https://github.com/yourusername/EveCogs
|
|
[p]cog install evecogs support
|
|
[p]load support
|
|
```
|
|
|
|
When you load this cog, it will:
|
|
1. ✅ Disable Red's core `contact` command
|
|
2. ✅ Disable Red's core `dm` command
|
|
3. ✅ Register its own enhanced versions of these commands
|
|
|
|
If you unload the cog, the original core commands are automatically restored.
|
|
|
|
## Setup
|
|
|
|
### Basic Setup
|
|
|
|
1. **Enable the system:**
|
|
```
|
|
[p]supportset enable
|
|
```
|
|
|
|
2. **Create a category:**
|
|
```
|
|
[p]supportset addcategory general #support-general General support questions
|
|
```
|
|
|
|
3. **Set default category (optional):**
|
|
```
|
|
[p]supportset defaultcategory general
|
|
```
|
|
|
|
4. **Configure logging (optional):**
|
|
```
|
|
[p]supportset logchannel #support-logs
|
|
```
|
|
|
|
### Advanced Setup
|
|
|
|
**Add multiple categories:**
|
|
```
|
|
[p]supportset addcategory billing #billing-support Billing and payment questions
|
|
[p]supportset addcategory technical #tech-support Technical issues
|
|
[p]supportset addcategory reports #reports User reports and moderation
|
|
```
|
|
|
|
**Customize categories:**
|
|
```
|
|
[p]supportset setemoji billing 💳
|
|
[p]supportset setemoji technical 🔧
|
|
[p]supportset setgreeting billing Thank you for contacting billing support!
|
|
```
|
|
|
|
**Configure options:**
|
|
```
|
|
[p]supportset anonymous true # Hide staff names in replies
|
|
[p]supportset requirecategory true # Force users to select a category
|
|
[p]supportset embed true # Use embeds for replies
|
|
[p]supportset showinfo true # Show staff info in replies
|
|
```
|
|
|
|
## Commands
|
|
|
|
### User Commands
|
|
|
|
#### `[p]contact <message>`
|
|
*Can only be used in DMs*
|
|
|
|
Send a message to server staff. Users will be prompted to select a category if multiple are available.
|
|
|
|
**Examples:**
|
|
```
|
|
[p]contact I need help with my account
|
|
[p]contact Bug report: commands not working
|
|
```
|
|
|
|
### Staff Commands
|
|
|
|
#### `[p]dm <user> <message>`
|
|
*Requires: Manage Server permission*
|
|
|
|
Send a DM to a user from the server. Replaces Red's built-in dm command with enhanced logging and formatting.
|
|
|
|
**Examples:**
|
|
```
|
|
[p]dm @User Hello! We received your support request
|
|
[p]dm 123456789012345678 Your issue has been resolved
|
|
```
|
|
|
|
### Admin Commands
|
|
|
|
All admin commands require Manage Server permission.
|
|
|
|
#### `[p]supportset enable`
|
|
Enable the support system for your server.
|
|
|
|
#### `[p]supportset disable`
|
|
Disable the support system for your server.
|
|
|
|
#### `[p]supportset addcategory <name> <channel> [description]`
|
|
Create a new support category.
|
|
|
|
**Example:**
|
|
```
|
|
[p]supportset addcategory billing #billing "Billing questions and payment issues"
|
|
```
|
|
|
|
#### `[p]supportset removecategory <name>`
|
|
Remove a support category.
|
|
|
|
#### `[p]supportset setemoji <category> <emoji>`
|
|
Set an emoji for a category (shown in category selection).
|
|
|
|
**Example:**
|
|
```
|
|
[p]supportset setemoji billing 💳
|
|
```
|
|
|
|
#### `[p]supportset setgreeting <category> <message>`
|
|
Set a custom greeting shown to users when they contact this category.
|
|
|
|
**Example:**
|
|
```
|
|
[p]supportset setgreeting billing Thanks for contacting billing! We'll respond within 24 hours.
|
|
```
|
|
|
|
#### `[p]supportset defaultcategory <name>`
|
|
Set the default category (used if only one category or user preference).
|
|
|
|
#### `[p]supportset logchannel [channel]`
|
|
Set or clear the log channel for support messages.
|
|
|
|
**Examples:**
|
|
```
|
|
[p]supportset logchannel #support-logs
|
|
[p]supportset logchannel # Clear log channel
|
|
```
|
|
|
|
#### `[p]supportset anonymous <true/false>`
|
|
Toggle anonymous mode (hides staff member names in replies).
|
|
|
|
#### `[p]supportset requirecategory <true/false>`
|
|
Toggle whether users must select a category.
|
|
|
|
#### `[p]supportset embed <true/false>`
|
|
Toggle using embeds for replies.
|
|
|
|
#### `[p]supportset showinfo <true/false>`
|
|
Toggle showing staff member info in replies.
|
|
|
|
#### `[p]supportset list`
|
|
Display all categories and current settings.
|
|
|
|
#### `[p]supportset block <user>`
|
|
Block a user from using the support system.
|
|
|
|
#### `[p]supportset unblock <user>`
|
|
Unblock a user from using the support system.
|
|
|
|
## Usage Examples
|
|
|
|
### Example 1: Simple Support Setup
|
|
|
|
Single category for all support:
|
|
```
|
|
[p]supportset enable
|
|
[p]supportset addcategory support #support-tickets General support
|
|
[p]supportset defaultcategory support
|
|
```
|
|
|
|
### Example 2: Multi-Category Setup
|
|
|
|
Different departments:
|
|
```
|
|
[p]supportset enable
|
|
[p]supportset addcategory general #general-support General questions
|
|
[p]supportset addcategory billing #billing Billing and payments
|
|
[p]supportset addcategory technical #tech-support Technical issues
|
|
[p]supportset addcategory reports #reports Report users or content
|
|
|
|
[p]supportset setemoji general 📝
|
|
[p]supportset setemoji billing 💳
|
|
[p]supportset setemoji technical 🔧
|
|
[p]supportset setemoji reports 🚨
|
|
|
|
[p]supportset requirecategory true
|
|
[p]supportset logchannel #support-logs
|
|
```
|
|
|
|
### Example 3: Anonymous Support
|
|
|
|
For servers that want anonymous staff replies:
|
|
```
|
|
[p]supportset enable
|
|
[p]supportset addcategory anonymous #anon-support Anonymous support
|
|
[p]supportset anonymous true
|
|
[p]supportset showinfo false
|
|
```
|
|
|
|
## How It Works
|
|
|
|
### User Experience
|
|
|
|
1. User sends `[p]contact <message>` in DMs
|
|
2. If multiple categories exist, they select one from a dropdown
|
|
3. Message is sent to the configured channel for that category
|
|
4. Staff can reply using `[p]dm <user> <message>`
|
|
5. User receives the reply in DMs
|
|
|
|
### Staff Experience
|
|
|
|
1. Support messages appear in category-specific channels
|
|
2. Each message shows user info, category, roles, join date
|
|
3. Staff reply with `[p]dm @user message`
|
|
4. All interactions are logged (if log channel is set)
|
|
5. Staff can block abusive users with control buttons
|
|
|
|
## Configuration Storage
|
|
|
|
- **Guild Settings**: Categories, channels, logging, options
|
|
- **User Settings**: Block status, category preferences, last contact time
|
|
|
|
## Comparison to Built-in Commands
|
|
|
|
| Feature | Red Built-in | Support Cog |
|
|
|---------|-------------|-------------|
|
|
| Basic contact/dm | ✅ | ✅ |
|
|
| Categories | ❌ | ✅ |
|
|
| Custom channels | ❌ | ✅ |
|
|
| Custom greetings | ❌ | ✅ |
|
|
| User blocking | ❌ | ✅ |
|
|
| Logging | Limited | ✅ Full |
|
|
| Embeds | Basic | ✅ Enhanced |
|
|
| Anonymous mode | ❌ | ✅ |
|
|
| Category emojis | ❌ | ✅ |
|
|
| Multi-server | Limited | ✅ Better |
|
|
|
|
## Tips
|
|
|
|
- **Use categories** to organize by department (billing, tech, general)
|
|
- **Set custom greetings** to set response time expectations
|
|
- **Enable logging** to keep track of all support interactions
|
|
- **Use anonymous mode** if staff prefer to keep names private
|
|
- **Block abusive users** to prevent spam
|
|
|
|
## Support & Feedback
|
|
|
|
For issues, suggestions, or contributions, please visit the [EveCogs repository](https://github.com/yourusername/EveCogs).
|
|
|
|
## Credits
|
|
|
|
Created for Red-DiscordBot V3 as a modernized replacement for the built-in contact/dm system.
|