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>
33 lines
802 B
Docker
33 lines
802 B
Docker
# Build stage
|
|
FROM node:22-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy package files
|
|
COPY package*.json pnpm-lock.yaml* ./
|
|
|
|
# Install latest pnpm and build dependencies (including ffmpeg for audio processing)
|
|
RUN npm install -g pnpm@latest && \
|
|
apk add --no-cache python3 make g++ ffmpeg opus-dev
|
|
|
|
# Install dependencies (including native modules that need compilation)
|
|
RUN pnpm install --force
|
|
|
|
# Production stage
|
|
FROM node:22-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# Install latest pnpm and runtime dependencies
|
|
RUN npm install -g pnpm@latest && \
|
|
apk add --no-cache ffmpeg opus
|
|
|
|
# Copy package files and installed dependencies from builder
|
|
COPY package*.json pnpm-lock.yaml* ./
|
|
COPY --from=builder /app/node_modules ./node_modules
|
|
|
|
# Copy application code
|
|
COPY . .
|
|
|
|
# Start the bot
|
|
CMD [ "node", "src/index.js" ] |