Musify Update [v1.0.5] - 5/18/2026
- Added better license checking & validation
- Added clearer error messages for setup issues
Core Additions
Configurable Command Prefix: Added a new prefix option in config.yml. The bot now supports traditional prefix commands (e.g., .play, .help) in addition to mention-based commands. Configuration Fix: Added the missing licenseKey field to config.yml
Logic Improvements
Strict Prefix Detection: Implemented strict start-of-message detection. Commands will only trigger if the prefix is the very first character in the message (no leading spaces allowed), preventing accidental triggers during conversations. Improved Guidance: When the bot is mentioned or the prefix is used without arguments, it now provides a helpful example using your active prefix.
Configuration Changes
config.yml: Added prefix: "." and licenseKey: "" under bot:
Musify Update - Patch Notes
New Features & Improvements:
Bug Fixes:
- Trusted Status Grace Period: Added a new 15-second grace period! If a trusted user accidentally disconnects or briefly leaves the Voice Channel, they now have up to 15 seconds to rejoin without losing their trusted status (preventing them from having to wait the full 5 minutes again).
- Trust System Member Sync: Fixed a critical issue where the Trust System wasn't counting users who were already in the Voice Channel before the bot joined.
Design & Security
- Enforced VC Consistency: Implemented a strict "Same Channel" requirement. The bot will now reject commands (even from Admins) if they are not in the same voice channel as the bot.
- Legacy Command Security: Added channel protection to all @mention commands (stop, skip, pause, etc.), closing a loophole that allowed remote control.
- Premium Channel Protection: Added the same-channel check to the dedicated music channel input. Typing a song will now only trigger playback if you are in a voice channel.
- Trust System Integration: A "5-Minute Listening threshold" is now active to prevent random users from instantly controlling the bot.
- Session Ownership: The bot identifies the "Session Owner" (who started the music) and grants them instant control, bypassing the wait.
Auto-Resume & Reliability
- Restart Resilience: Bot survives restarts and crashes, automatically rejoining the voice channel and resuming playback within seconds.
- Persistent Trust States: Listening timers for every user are saved to the database, so users don't lose their "Trusted" status when the bot reboots.
- Interactive Link Recovery: Reconnects to existing Now Playing embeds after a restart, maintaining button interactivity on "old" messages.
- Lavalink Stability: Added a node-readiness wait loop and explicit voice synchronization to fix the "silence after resume" bug.
UI & Interaction Improvements
- Play Next Overhaul: "Play Next" now transforms the original "Added to Queue" response into a confirmed "Moved to Top" state, reducing chat clutter.
- Dynamic Metadata: Confirmations now dynamically show the Song Title, Artist, and Duration for better user feedback.
- Accuracy Fixes: Corrected user attribution in action-based embeds (Clear, Shuffle, Remove, etc.) to show who ran the command, not the track requester.
Optimization & Technical
- Mongoose Modernization: Fixed all findOneAndUpdate warnings by switching to the modern returnDocument: 'after' standard.
- Concurrency Locks: Added an isResuming system flag to prevent state corruption during the bot's startup recovery.
- Database Efficiency: Implemented throttled writes (15s minimum) for playback position to keep the database snappy.
