Modernize Discord bot to v14 and Node.js 22
Major upgrades and architectural improvements: - Upgrade Discord.js from v12 to v14.21.0 - Upgrade Node.js from 14 to 22 LTS - Switch to pnpm package manager - Complete rewrite with modern Discord API patterns New Features: - Hybrid command system: prefix commands + slash commands - /sfx slash command with autocomplete for sound discovery - Modern @discordjs/voice integration for audio - Improved voice connection management - Enhanced logging for SFX commands - Multi-stage Docker build for optimized images Technical Improvements: - Modular architecture with services and command handlers - Proper intent management for Discord gateway - Better error handling and logging - Hot-reload capability maintained - Environment variable support - Optimized Docker container with Alpine Linux Breaking Changes: - Moved main entry from index.js to src/index.js - Updated configuration structure for v14 compatibility - Replaced deprecated voice APIs with @discordjs/voice - Updated audio dependencies (opus, ffmpeg) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
26
src/config/config.js
Normal file
26
src/config/config.js
Normal file
@@ -0,0 +1,26 @@
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
// Load config from root directory
|
||||
const configPath = path.join(__dirname, "..", "..", "config.json");
|
||||
const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
||||
|
||||
// Validate required config fields
|
||||
function validateConfig(config) {
|
||||
if (!config.discord?.token) {
|
||||
throw new Error("Discord token is required in config.json");
|
||||
}
|
||||
|
||||
if (!config.discord?.guilds || !Array.isArray(config.discord.guilds)) {
|
||||
throw new Error("Discord guilds configuration is required");
|
||||
}
|
||||
|
||||
// Ensure guilds is an array (supporting both old object format and new array format)
|
||||
if (!Array.isArray(config.discord.guilds)) {
|
||||
config.discord.guilds = Object.values(config.discord.guilds);
|
||||
}
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
module.exports = validateConfig(config);
|
||||
Reference in New Issue
Block a user