Discord Bot Integration
The ErikrafT Drop Discord bot brings file sharing capabilities directly to Discord servers, enabling users to send and receive files through Discord commands while maintaining the security and efficiency of the ErikrafT Drop peer-to-peer system.Bot Overview
Core Functionality
The Discord bot provides a bridge between Discord and ErikrafT Drop:- Slash Commands:
/dropcommand for file sharing operations - Real-time Integration: Appears as paired device in ErikrafT Drop web interface
- Multi-file Support: Send up to 3 files per command
- Text Messaging: Send text messages alongside files
- Bidirectional Transfer: Send and receive files through Discord
Technical Architecture
Installation and Setup
Bot Invitation
Invite the bot to your Discord server: https://discord.com/oauth2/authorize?client_id=1367869058707492955Prerequisites
- Node.js 18+: Required for bot operation
- Discord Server: Server with bot administration permissions
- ErikrafT Drop Instance: With WebSocket fallback enabled
- Bot Application: Registered on Discord Developer Portal
Self-Hosting Setup
1. Discord Application Setup
- Create Application: Visit Discord Developer Portal
- Create Bot: Add bot to application
- Configure Permissions: Set appropriate bot permissions
- Generate Token: Create bot token for authentication
2. Bot Configuration
3. Environment Variables
Configure.env file with required variables:
4. Command Registration
Bot Architecture
Project Structure
Core Components
Main Bot Instance (src/index.js)
ErikrafT Drop Client (src/client/dropClient.js)
Drop Command (src/commands/drop.js)
Command Usage
/drop Command
The primary command for file sharing operations:Command Options
Usage Examples
Basic File Sharing:Command Features
File Handling
- Multiple Files: Support for up to 3 files per command
- File Types: All file types supported
- Size Limits: Respects Discord file size limits
- Processing: Files processed in memory without disk storage
Message Handling
- Text Messages: Send text messages up to 2000 characters
- Formatting: Supports Discord markdown formatting
- Encoding: Proper character encoding for international text
- Validation: Input validation and sanitization
Response Handling
- Ephemeral Messages: Responses visible only to command user
- Progress Feedback: Real-time transfer progress updates
- Error Handling: Graceful error handling and user feedback
- Completion Notification: Transfer completion confirmation
Integration Features
Real-time Device Discovery
The bot appears as a paired device in the ErikrafT Drop web interface:Device Identification
Connection Status
- Online Indicator: Shows when bot is connected
- Real-time Updates: Connection status updates in real-time
- Auto-reconnection: Automatic reconnection on disconnect
- Error Reporting: Connection error notifications
WebSocket Fallback Integration
The bot uses WebSocket fallback for file transfers:Transfer Process
Data Handling
- Base64 Encoding: Files encoded as base64 for WebSocket transfer
- Chunking: Large files chunked for efficient transfer
- Memory Management: Files processed in memory without disk storage
- Error Recovery: Automatic retry on transfer failures
Security Features
Authentication and Authorization
Discord Authentication
- Bot Token: Secure Discord bot token authentication
- Guild Permissions: Server-specific permission validation
- Command Permissions: Role-based command access control
- User Validation: Discord user identity verification
ErikrafT Drop Integration
- Pairing Key Validation: 6-digit key format validation
- Room Access: Secure room access through pairing keys
- Connection Authentication: WebSocket connection authentication
- Transfer Authorization: Transfer request authorization
Data Protection
Privacy Measures
- No Disk Storage: Files never written to disk
- Memory Processing: All processing in memory only
- Ephemeral Messages: Discord responses are ephemeral
- Secure Transmission: Encrypted WebSocket transmission
Security Best Practices
- Token Security: Secure token storage and handling
- Input Validation: Comprehensive input validation and sanitization
- Rate Limiting: Command rate limiting to prevent abuse
- Error Handling: Secure error handling without information leakage
Performance Optimization
Memory Management
- Efficient Processing: Optimized file processing algorithms
- Memory Cleanup: Automatic memory cleanup after transfers
- Stream Processing: Stream-based file processing for large files
- Garbage Collection: Proper garbage collection practices
Network Optimization
- Connection Pooling: Efficient WebSocket connection management
- Compression: Data compression for improved transfer speed
- Timeout Management: Appropriate timeout settings
- Retry Logic: Intelligent retry mechanisms
Bot Performance
- Asynchronous Operations: Non-blocking file processing
- Concurrent Handling: Handle multiple concurrent transfers
- Resource Management: Efficient resource utilization
- Scalability: Designed for multiple server support
Deployment Options
Self-Hosting
Deploy the bot on your own infrastructure:Local Deployment
Production Deployment
Docker Deployment
Cloud Hosting
Deploy to cloud platforms for 24/7 operation:Recommended Platforms
- Shard Cloud: https://shardcloud.app/pt-br/dash
- Discloud: https://discloud.com/dashboard
- Heroku: Platform-as-a-Service deployment
- DigitalOcean: Cloud VPS deployment
Configuration Examples
Troubleshooting
Common Issues
Connection Problems
- WebSocket Connection: Verify ErikrafT Drop server accessibility
- Discord API: Check Discord API status and bot permissions
- Network Issues: Verify network connectivity and firewall settings
- Token Issues: Validate Discord bot token and application ID
Command Issues
- Command Registration: Ensure slash commands are properly registered
- Permissions: Verify bot has necessary permissions in server
- Key Validation: Check pairing key format and validity
- File Processing: Verify file size and type constraints
Transfer Issues
- File Size: Check Discord file size limitations
- Memory Issues: Monitor bot memory usage
- Network Stability: Verify network stability during transfers
- Server Status: Check ErikrafT Drop server status
Debug Information
Bot Diagnostics
WebSocket Diagnostics
Future Development
Planned Enhancements
Feature Improvements
- Additional Commands: More Discord slash commands
- File Type Support: Enhanced file type handling
- Progress Indicators: Better progress indication
- Error Handling: Improved error handling and user feedback
Integration Enhancements
- Multi-server Support: Support for multiple Discord servers
- Role-based Access: Advanced role-based permissions
- Custom Commands: Custom command configuration
- Webhook Integration: Discord webhook integration
Performance Improvements
- Caching: Implement intelligent caching mechanisms
- Load Balancing: Support for load balancing
- Monitoring: Enhanced monitoring and alerting
- Scalability: Improved scalability for large servers