All notable changes to NeruBot will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Music: Skip sends invalid payload —
Skip()was sending{"track":{"encoded":"","userData":null}}to Lavalink, which rejectsnullforuserData. Now uses the same 3-strategy fallback asonTrackEnd: encoded URI → URL load → title search. This fixes "failed to skip: Bad Request" and playback stopping after a few songs. - Music: Playlist load fails with "first playlist track not found" —
PlayPlaylist()only tried loading by URL with no fallback. Now falls back to title+author search if the URL load returns no tracks.
- Core Commands —
/ping,/botinfo,/serverinfo,/userinfo,/avatarfor essential bot & server information - Moderation System —
/kick,/ban,/timeout,/purge,/warn,/warnings,/clearwarningswith proper permission checks - Fun Commands —
/coinflip,/8ball(magic 8-ball) for casual server entertainment - Utility Commands —
/poll(reaction-based polls up to 5 options),/calc(math calculator with 6 operations) - Warning System — Persistent warning records stored in MongoDB with per-guild, per-user tracking
- Security: Spam Detection — Automatic spam detection (5+ messages in 5 seconds) with message deletion
- Security: Malicious Link Filter — Detects and removes phishing Discord gift links, IP loggers, and suspicious domains
- Paginated Help Menu — Interactive
/helpwith Prev/Next navigation buttons across 6 categorized pages - Moderation Repository —
moderation_repository.gofor warning persistence,moderation.goentity
- Version bump: 4.0.0 → 5.0.0
- Help command: Completely rewritten with Discord button-based pagination (6 pages: Overview, Fun, Utility, Moderation, Scheduling, Music)
- Help translations: All 5 languages (EN, ID, JP, KR, ZH) updated with new command entries
- Content filter: Enhanced with regex-based malicious link patterns and spam tracking
- Command routing: Reorganized with clear sections (core, features, fun, utility, moderation, music)
- README.md: Updated with comprehensive command tables organized by category
- Indonesian Holiday Reminders — automatic
@everyonenotifications at 07:00 WIB for national holidays (Tahun Baru, Idul Fitri, Kemerdekaan, Natal, Nyepi, Waisak, and more) covering 2025-2027 - Ramadan Sahoor & Berbuka Reminders — automatic
@everyonenotifications at sahoor and Maghrib times during Ramadan, Jakarta timezone, with warm Indonesian-language messages /remindercommand to view upcoming holidays and today's Ramadan schedule.env.examplewith clean configuration template.gitignore(proper Go-focused ignore rules)docs/USER_GUIDE.md— complete user-facing documentationdocs/DEVELOPMENT.md— developer setup and architecture guide
- Code Structure Overhaul
- Split monolithic
handlers.go(732 lines) into feature-specific handler files:handler_music.go,handler_confession.go,handler_roast.go,handler_chatbot.go,handler_news.go,handler_whale.go,handler_analytics.go,handler_reminder.go - Moved shared response helpers (
respond,respondEmbed,followUp, etc.) intohandlers.go - Simplified
main.go— removed unused imports and redundant service initialization - Fixed bot lifecycle:
Start()is non-blocking; signal handling is inmain.goonly
- Split monolithic
- Emoji Cleanup — replaced all decorative Unicode emojis with text indicators (
[OK],[ERR],>>,||, etc.) - Documentation — rewrote README.md, added user guide and development guide
- Unused gRPC microservices (
services/,api/proto/) - Lavalink Docker/Railway configs (
Dockerfile.lavalink,application.yml,railway.lavalink.toml) - Extra Docker Compose files (
docker-compose.microservices.yml,docker-compose.music.yml) - Proto generation scripts, init-db.sql, test-services.ps1
- Outdated documentation files (ARCHITECTURE.md, CONTRIBUTING.md, docs/*.md)
- gRPC/protobuf dependencies from go.mod
- Logger
sprintf: Was returning the format string unformatted; now usesfmt.Sprintf - Music shuffle:
shuffleSongsused biasedtime.Now().UnixNano() % n— replaced withmath/rand - Reuters RSS URL: Fixed invalid URL (
reedsnews) — pointed to a working Google News / Reuters feed - Sorting: Replaced O(n²) bubble sort with
sort.Slicein analytics and news services
- All Go dependencies upgraded to latest versions
- Version bumped from 3.0.0 to 4.0.0
-
Music System
- YouTube audio streaming with yt-dlp
- Queue management (add, skip, pause, resume, stop)
- Now playing information
- FFmpeg audio processing
- DCA encoding for Discord voice
-
Confession System
- Anonymous confession submission
- Moderation queue with approval/rejection
- Reply system with threading
- Guild-specific settings
- JSON-based persistence
-
Roast System
- User activity tracking (messages, voice time, commands)
- AI-powered roast generation
- Statistics and leaderboards
- 8 roast categories (night owl, spammer, lurker, etc.)
- Pattern-based roast templates
-
AI Chatbot
- Multi-provider support (Claude, Gemini, OpenAI)
- Automatic fallback between providers
- Session management with 30-minute timeout
- Background session cleanup
- Context-aware conversations
-
News System
- RSS feed aggregation from 5 sources
- Concurrent fetching with goroutines
- Auto-publishing capability
- Customizable news sources
-
Whale Alerts
- Cryptocurrency whale transaction monitoring
- Whale Alert API integration
- Configurable minimum threshold ($1M default)
- Real-time alert capability
-
Core Infrastructure
- Clean Architecture implementation (5 layers)
- Configuration management with environment variables
- Structured logging with file rotation
- FFmpeg wrapper for audio processing
- yt-dlp wrapper for YouTube downloads
- Discord bot integration with DiscordGo
-
Commands (19 total)
- Music:
/play,/skip,/pause,/resume,/stop,/queue,/nowplaying - Confession:
/confess,/confess-reply,/confess-approve,/confess-reject - Roast:
/roast,/roast-stats,/roast-leaderboard - Chatbot:
/chat,/chat-reset - News:
/news - Whale:
/whale - Utility:
/help
- Music:
- Golang 1.21+ with Clean Architecture
- DiscordGo for Discord API integration
- JSON-based data persistence
- Multi-provider AI integration
- Concurrent operations with goroutines
- Thread-safe data access with sync.RWMutex
- Docker deployment support
- Systemd service configuration
github.com/bwmarrin/discordgov0.28.1 - Discord APIgithub.com/joho/godotenvv1.5.1 - Environment variablesgithub.com/mmcdole/gofeedv1.3.0 - RSS parsing- External: FFmpeg, yt-dlp
- Binary size: ~8.8MB (optimized)
- Memory usage: ~50-100MB
- Startup time: <2 seconds
- Audio latency: <100ms
This is the first production release of NeruBot, a complete rewrite in Golang with Clean Architecture principles. All core features and optional features are fully implemented and production-ready.
Highlights:
- 6 major feature systems
- 19 slash commands
- Multi-provider AI chatbot
- Real-time crypto whale alerts
- High-quality audio streaming
- Anonymous confession system
- AI-powered user roasting
Migration Notes: This version represents a complete migration from Python (discord.py) to Golang (DiscordGo). All features from the Python version have been reimplemented with improved performance and architecture.
For detailed documentation, see README.md and ARCHITECTURE.md.