Version v4.44.04 (Current)
Fixed Issues
fix: update player state logic during play trigger
fix: improve player reconstruction and state updates
fix: update player reconstruction and state handling
fix: refine live lyrics scheduling and debug logging
fix: improve live lyrics scheduling logic
fix: update YouTube plugin capabilities list
fix: correct YouTube search identifier in LavaSrcPlugin
fix: remove unnecessary semicolon in SponsorBlockPlugin
fix: update bot node configuration
fix: Update property validation to ensure correct type checks for guildId, voiceChannelId, and textChannelId in PlayerManager
fix: improve validation logic for position in skip and seek methods
fix: update validation logic in Player class methods
Refactors
refactor: update JavaLyricsPlugin source map compression
refactor: remove
originNodeIdentifierfrom typings
refactor: optimize structure mapping and sourcemap generation
refactor: simplify YouTubePlugin lifecycle methods
refactor: improve debug logging in PluginManager
refactor: simplify LavaSrcPlugin lifecycle methods
refactor: remove deprecated Database class
New Features
feat: add LavaDSPXPlugin to extend plugin support
feat: extend YouTube plugin capabilities
feat: add new audio filter interfaces
feat: add support for new audio filters and validations
feat: add advanced audio filters with LavaDSPX support
feat: implement JavaLavaLyricsPlugin for advanced lyrics handling
feat: implement JavaLyricsPlugin for enhanced lyrics support
feat: integrate track end handling for lyrics plugin
feat: extend provider support for lyrics operations
feat: improve live lyrics subscription handling
feat: enhance live lyrics subscription display
feat: add lyrics cache to Manager for performance
feat: enhance static lyrics retrieval and fallback
feat: implement LyricsKtPlugin for lyrics management
feat: add provider support for lyrics subscription
feat: improve lyrics handling with provider support
feat: enhance lyrics management and search flexibility
feat: enhance lyrics command functionality
feat: enhance lyrics response mapping and handling
feat: extend ILavaLyricsObject definition
feat: extend search source types and add direct sources
feat: add new track properties and methods
feat: improve queue handling with blacklist integration
feat: improve player handling and blacklist integration
feat: add blacklist track removal during player resume
feat: add blacklist tracking and Skybot provider support
feat: extend partialTrack for position info
feat: add Speak command and extend Skybot capabilities
feat: add SkybotPlugin for extended bot capabilities
feat: add LavaLyricsPlugin for lyrics support
feat: add commands for live lyrics subscription
feat: add POST method to Rest API client
feat: add lyrics management methods to Player
feat: integrate LavaLyrics plugin event handling
feat: add lyrics subscription and retrieval methods
feat: enhance lyrics retrieval and handling logic
feat: add LavaLyrics typings for lyrics integration
feat: add LavaSearchPlugin for advanced search functionality
feat: enhance SearchResult with LavaSearch fields
feat: enhance music search with LavaSearch support
feat: add LavaSearch method to Manager typings
feat: expand typings to support LavaSearch results
feat: implement SponsorBlock plugin
feat: add SponsorBlock and chapter navigation commands
feat: add chapter-related fields and refactor origin handling
feat: add REST methods for GET, PUT, and DELETE
feat: improve PluginManager debug logging for plugins
feat: enhance Player with TTS, chapter, and SponsorBlock features
feat: add chapter display to now playing embed
feat: introduce TTS improvements, chapters, and SponsorBlock API
feat: add SponsorBlock plugin event handling
feat: add chapter and segment support in player typings
feat: enhance TTS query handling in Rest entity
feat: enhance TTS support with multi-provider flexibility
feat: update playerSpeak and introduce ISpeakOptions
feat: add GoogleCloudTTSPlugin for TTS support
feat(spotify): add clientId and clientSecret options for Spotify API authentication
feat: reintroduce Database with WAL and snapshot support
feat: add YouTubePlugin for YouTube search support
feat: add LavaSrcPlugin for extended search support
feat: introduce PluginManager for plugin registration
feat: add AbstractPlugin class for plugin definition
feat: extend search sources and partial track properties
feat: add originNodeIdentifier to Track entity
feat: improve node selection and add FloweryTTS support
feat: enhance Node validation and add capability-based node selection
feat: enhance node plugin and autoplay functionality
feat: improve plugin management and refactor search logic
feat: add playerSpeak event and FloweryTTS options
feat: add PluginManager support to exports
Chore
chore: update version and User-Agent headers
chore: clean up comments and minor formatting in lyrics command
chore: remove redundant comments in lyrics command
chore: remove redundant comments from LavaLyricsPlugin
chore: remove debug console statements in SearchResult
chore: regenerate NodeManager.js sourcemap
chore: update sourcemap for Manager.js
chore: update sourcemap for Manager.js
chore: update sourcemap for Manager.js
chore: remove unused token URL
chore: remove unnecessary newline at EOF in Utils.ts
chore: update source maps for Track.js
chore: remove unnecessary newline at EOF in PlayerManager.ts
chore: bump version in package-lock.json
chore: included the built code
Version v4.28.32 -> v4.28.34
New Features
feat: add WebSocket type definitions and bump version
feat: add WebSocket client implementation
Version v.4.6.18 -> v4.28.32
Fixed Issues
fix: correct source map generation for Spotify
fix: improve PlayerManager validation and error handling
fix: correct WebSocket initialization in Listen entity
fix: improve error handling and debug logs in Deezer API
fix: improve error handling and add debug logs in Database
fix: remove unused
nodeRawevent listener
Refactors
refactor: enhance Player entity with readonly properties, refinements, and private methods
refactor: simplify
player.previouslogic and add debug logging in Node entity
refactor: remove
previousInArraylogic and add debug logging in Node entity
refactor: remove unused
previousInArrayproperty from interfaces
New Features
feat: add retry logic to makeRequest function
feat: extend type definitions with enums and new type
feat: add support for YouTube thumbnail retrieval
feat: improve loadFolder method with async and error handling
feat: enhance Queue with sorting, range, and deduplication
feat: enhance Player with history, looping, and events
feat: improve NodeManager with health checks and node sorting
feat: enhance Node with improved state management
feat: enhance Manager with config validation and source fallback
feat: add WebSocket service to Listen entity
feat: extend event typings and configuration fields
feat: emit
filtersUpdateevent on update
feat: emit
filtersUpdateevent on filter modifications
feat: implement Write-Ahead Logging (WAL) for Database persistence and improved performance
feat: enhance Spotify and utility functionalities
Chore
chore: update
User-Agentand bump package version
chore: update package versions and cleanup dependencies
chore: update .npmignore to exclude tests directory
chore: update utils API icon to
lucide:tool-casein documentation
chore: update bot settings to include
disableNativeSourcesconfiguration
chore: update Player.js.map file to reflect latest mappings
chore: update Manager.js.map file to reflect latest mappings
Version v4.6.18 (Current)
Fixed Issues
fix: Update User-Agent string in headers with updated version info.
fix: Update typings, SourceManager, and bot settings; improve error handling and add debug logging.
fix: Spotify endpoint change.
fix: Update bot.js and index.js for new Lavalink server configuration; enhance nowplaying and search commands for better track information.
Refactors
refactor: Simplify pluginInfo assignment in Track class constructor.
refactor: Simplify default position fallback to 0.
refactor: Update User-Agent in defaultHeaders to reflect new version and branding.
refactor: Update Manager configuration and modify track search query in index.js; adjust partialTrack options in bot.js.
refactor: Rename isLinkMatch to match in ISource interface and add Spotify options to IOptionsManager.
refactor: Update isLinkMatch method to return match status and source name.
New Features
feat: Add Deezer source integration with configurable options.
feat: Refactor Spotify source implementation.
feat: Add resolve method to Track class for plugin-specific track resolution.
feat: Implement Spotify autoplay functionality for players.
Chore
chore: Update version to 4.5.3.dev.2 in package.json.
chore: Bump version to 4.5.3 in package.json.
chore: Update version to 4.4.62-dev.3 for development purposes.
chore: Update version to 4.4.62 and enhance changelog with new updates (#144).
chore: Update version to 4.4.62 and enhance changelog with new updates.
chore: Update User-Agent string and version in headers; add changelog and update version in package.json.
chore: Update bot configuration with new host and port settings; remove unused parameters.
Documentation
docs: Update README for clarity and structure; enhance documentation sections and improve phrasing.
docs: Update release version to v4.4.28 and enhance documentation with new bot applications section.
Version v4.6.3 -> v4.6.18
Fixed Issues
fix: update User-Agent string in headers with updated version info
fix: update typings, SourceManager, and bot settings; improve error handling and add debug logging
fix: Spotify endpoint change
fix: update bot.js and index.js for new Lavalink server configuration; enhance nowplaying and search commands for better track information
fix: update User-Agent version in headers for consistency
fix: enhance Deezer URL matching and fetch logic for short links
fix: replace error throwing with debug logging for Deezer API request failures
Refactors
refactor: simplify pluginInfo assignment in Track class constructor
refactor: simplify default position fallback to 0
refactor: Update User-Agent in defaultHeaders to reflect new version and branding
refactor: Update Manager configuration and modify track search query in index.js; adjust partialTrack options in bot.js
refactor: Rename isLinkMatch to match in ISource interface and add Spotify options to IOptionsManager
refactor: Update isLinkMatch method to return match status and source name
New Features
feat: add Deezer source integration with configurable options
feat: Refactor Spotify source implementation
feat: Add resolve method to Track class for plugin-specific track resolution
feat: Implement Spotify autoplay functionality for players
Version v4.5.3 -> v4.6.3
Fixed Issues
fix: Improve search method in Manager class to handle sources more effectively and ensure proper query validation.
fix: Update version to 4.4.62-dev.22 in package.json.
fix: Update version to 4.4.62-dev.5 in package.json.
fix: Set player loop mode to "track" and ensure playback starts correctly.
fix: Prevent processing track end for destroyed players.
fix: Add destroyed flag to Player class to prevent multiple destroy calls.
fix: When bot disconnected and played again, it played 3s from the beginning and went back.
fix: Improve player reconnection logic and add player reconnect event.
fix: Parse payload as JSON before sending in sendPayload method.
fix: Parse payload before sending in sendPayload method; update search command to use object syntax.
New Features
feat: Add isLinkMatch method to SourceManager and Spotify classes.
feat: Adapt structure to receive SourceManager, to load sources natively and dynamically.
feat: Add GalaxyBot team card and update avatar for xotakfr.
feat: Add ws dependency and improve environment detection.
feat: Update package description for clarity; simplify duration display in play command; set developer ID in config.
feat: Add search command, improve play command, and add join command improvements.
feat: Integrate nuxt-gtag module for Google Analytics tracking; update bot configuration with local host and port settings.
feat: Add disableDatabase and blacklisteSources options to IOptionsManager interface.
feat: Enhance SearchResult class with LoadType and additional methods for track management.
feat: Add find, move, slice, filter, reverse methods and position/previous properties to Queue class for enhanced track management.
feat: Add has and delete methods to Player class; refactor data management with updateData method.
feat: Add system monitoring and player migration methods to Node class for improved performance management.
feat: Implement disableDatabase functionality in Database class to control data loading and saving.
feat: Add disableDatabase option to Manager configuration and deprecate player management methods for improved clarity.
Refactors
refactor: Rename generateShortUUID to generateUUID and update its implementation; add disableDatabase and blacklisteSources options to IOptionsManager interface.
refactor: Replace generateShortUUID with generateUUID in NodeManager for consistency.
refactor: Remove trailing comma in accept-encoding header for consistency in Rest class.
refactor: Rename generateShortUUID to generateUUID for clarity and update UUID generation logic.
refactor: Streamline Player data management by replacing direct database calls with updateData method; update installation documentation for clarity and structure.
Chore
chore: Update version to 4.5.3.dev.2 in package.json.
chore: Bump version to 4.5.3 in package.json.
chore: Update version to 4.4.62-dev.3 for development purposes.
chore: Update version to 4.4.62 and enhance changelog with new updates (#144).
chore: Update version to 4.4.62 and enhance changelog with new updates.
chore: Update User-Agent string and version in headers; add changelog and update version in package.json.
chore: Update bot configuration with new host and port settings; remove unused parameters.
Documentation
docs: Update README for clarity and structure; enhance documentation sections and improve phrasing.
docs: Update release version to v4.4.28 and enhance documentation with new bot applications section.
Version v4.4.36 -> v4.5.3
Fixed Issues
fix: update User-Agent string in headers with updated version info
fix: update typings, SourceManager, and bot settings; improve error handling and add debug logging
fix: Spotify endpoint change
fix: update bot.js and index.js for new Lavalink server configuration; enhance nowplaying and search commands for better track information
fix: update User-Agent version in headers for consistency
fix: enhance Deezer URL matching and fetch logic for short links
fix: replace error throwing with debug logging for Deezer API request failures
Refactors
refactor: simplify pluginInfo assignment in Track class constructor
refactor: simplify default position fallback to 0
refactor: Update User-Agent in defaultHeaders to reflect new version and branding
refactor: Update Manager configuration and modify track search query in index.js; adjust partialTrack options in bot.js
refactor: Rename isLinkMatch to match in ISource interface and add Spotify options to IOptionsManager
refactor: Update isLinkMatch method to return match status and source name
New Features
feat: add Deezer source integration with configurable options
feat: Refactor Spotify source implementation
feat: Add resolve method to Track class for plugin-specific track resolution
feat: Implement Spotify autoplay functionality for players
Version v4.5.3
New Features
feat: SourceManager class introduced for managing native sources like Spotify.
feat: Spotify source integration added.
feat: Track class now has a resolve() method for internal plugin resolution.
feat: Player class now has a destroyed property to prevent multiple destroy calls.
feat: Player class's play() method now checks pluginInfo.MoonlinkInternal and calls track.resolve() if true.
feat: Player class's play() method now sets position to 0 if looping.
feat: Player class's destroy() method now accepts a reason parameter.
feat: Node class's reconnect() method now includes a delayed reconnect logic with exponential backoff.
feat: Node class's TrackEndEvent now checks if the player is destroyed before processing.
feat: Node class's TrackStartEvent now sets player.playing = true during auto-resume.
feat: Node class's WebSocketClosedEvent now attempts to reconnect the player up to 6 times before destroying it.
feat: Manager class now has a sources property for SourceManager.
feat: Manager class's search() method now uses SourceManager for native source matching and searching.
feat: Manager class's init() method now logs the environment and version.
feat: Manager class's packetUpdate() method now emits playerReconnect event.
feat: Queue class now has find(), move(), slice(), filter(), reverse(), position, and previous getters.
feat: IOptionsManager now includes disableNativeSources and spotify options.
feat: ISource interface added for source management.
Fixed Issues
fix: Player's requestedBy handling in play method improved for correct requester data.
fix: Player's playing status now correctly set to true during auto-resume.
fix: Track's pluginInfo handling.
Refactors
refactor: generateShortUUID renamed to generateUUID.
refactor: Manager's createPlayer(), getPlayer(), hasPlayer(), deletePlayer()' methods are now deprecated, encouraging the use of players.create(), players.get(), etc.
refactor: Database now has disabled flag and improved logging for errors.
refactor: Node's uuid generation now uses generateUUID.
refactor: Player's data management now uses updateData method.
refactor: Queue's add method now accepts a single track or an array of tracks.
refactor: Rest class uses stringifyWithReplacer.
refactor: Track class now uses partialTrack option for selective property loading.
refactor: Rest class's User-Agent updated.
Chore
chore: .gitignore updated.
chore: Version bumped to 4.5.3.
chore: pnpm-lock.yaml updated.
chore: README.md updated.
chore: Docs updated.
Version 4.4.28 -> 4.4.36
New Features
feat: Added 'disableDatabase' option to Manager configuration.
feat: Added 'blacklisteSources' option to Manager configuration.
feat: 'getSystemStats()', 'isOverloaded()', 'getNodeInfo()', 'migrateAllPlayers()', 'needsRestart()', 'getNodeStatus()', 'checkHealth()' methods added to Node class.
feat: 'find()', 'move()', 'slice()', 'filter()', 'reverse()', 'position', 'previous' getters added to Queue class.
feat: 'has()', 'delete()', 'updateData()' methods added to Player class.
Fixed Issues
fix: Player's 'requestedBy' handling in 'play' method improved for correct requester data.
fix: Player's 'playing' status now correctly set to true during auto-resume.
fix: Track's 'pluginInfo' handling.
Refactors
refactor: 'generateShortUUID' renamed to 'generateUUID'.
refactor: Manager's 'createPlayer()', 'getPlayer()', 'hasPlayer()', 'deletePlayer()' methods are now deprecated, encouraging the use of 'players.create()', 'players.get()', etc.
refactor: Database now has 'disabled' flag and improved logging for errors.
refactor: Node's 'uuid' generation now uses 'generateUUID'.
refactor: Player's data management now uses 'updateData' method.
refactor: Queue's 'add' method now accepts a single track or an array of tracks.
refactor: Rest class uses 'stringifyWithReplacer'.
refactor: Track class now uses 'partialTrack' option for selective property loading.
Chore
chore: .gitignore updated.
chore: Version bumped to 4.4.36.
chore: 'pnpm-lock.yaml' updated.
chore: 'README.md' updated.
chore: Docs updated.
Version v4.4.14 -> v4.4.28
New Features
feat: Added 'sortPlayersByRegion' option to Manager configuration for regional player sorting.
feat: Introduced 'pathVersion' in Node configuration for specifying Lavalink API version.
feat: Implemented new documentation site using Nuxt.js and Shadcn Docs.
feat: Added new test bot commands: 'join' and 'search'.
feat: 'partialTrack' option added to Manager configuration for selective track property loading.
feat: 'compareVersions' and 'stringifyWithReplacer' utility functions added.
feat: 'pluginInfo', 'isPartial', 'createPropertySetters', 'resolveData', 'isPartialTrack', 'raw', and 'unresolvedTrack' added to 'Track' class.
feat: 'duration', 'isEmpty', 'first', 'last', and 'all' getters added to 'Queue' class.
feat: 'Database' class now handles loading/parsing errors by emitting debug messages.
feat: 'Register' module introduced to register structures.
Fixed Issues
fix: Player's 'requestedBy' handling in 'play' method improved for correct requester data.
fix: Player's 'playing' status now correctly set to true during auto-resume.
fix: 'Track' class constructor now correctly handles 'pluginInfo'.
Refactors
refactor: 'requester' removed from Manager's 'search' options, now handled internally by 'SearchResult'.
refactor: Node's 'url' construction now dynamically uses 'pathVersion'.
refactor: 'Track's 'requestedBy' property updated to directly accept Object or string, with a new 'setRequester' method.
refactor: Database error handling improved to emit debug messages instead of throwing errors.
refactor: 'Track' class now uses 'partialTrack' option for selective property loading.
refactor: 'Queue's 'add' method now accepts a single track or an array of tracks.
refactor: 'Rest' class now uses 'stringifyWithReplacer' for JSON stringification.
refactor: 'index.ts' updated to use 'structures' from 'Utils' for exporting.
Chore
chore: .gitignore updated to ignore 'docs/node_modules', 'docs/.nuxt', 'docs/.output', 'docs/.vscode'.
chore: Version bumped to 4.4.28.
chore: 'pnpm-lock.yaml' updated.
chore: 'README.md' updated with new badges and description.
chore: 'docs/' directory added with new documentation.
Version v4.4.14
New Features
feat: Added 'sortPlayersByRegion' option to Manager configuration for regional player sorting.
feat: Introduced 'pathVersion' in Node configuration for specifying Lavalink API version.
feat: Implemented new documentation site using Nuxt.js and Shadcn Docs.
feat: Added new test bot commands: 'join' and 'search'.
Fixed Issues
fix: Player's 'requestedBy' handling in 'play' method improved for correct requester data.
fix: Player's 'playing' status now correctly set to true during auto-resume.
Refactors
refactor: Removed 'requester' from Manager's 'search' options, now handled internally by SearchResult.
refactor: Node's 'url' construction now dynamically uses 'pathVersion'.
refactor: Track's 'requestedBy' property updated to directly accept Object or string, with a new 'setRequester' method.
refactor: Database error handling improved to emit debug messages instead of throwing errors.
Chore
chore: .gitignore updated to include 'docs/' directory.
chore: Version bumped to 4.4.14 and 'packageManager' field added to package.json.
chore: pnpm-lock.yaml added.
chore: README.md updated with new badges and description.
Version v4.4.7
Fixed Issues
fix: Player playing status reset to false on node reconnect to prevent incorrect state.
fix: Player requestedBy handling improved to correctly manage string or object user data.
Chore
chore: Version bumped to 4.4.7.
chore: Added decodeTrack utility to test bot for debugging.
Refactors
refactor: Player queue add method in test bot now passes requester ID.
Version v4.4.6
New Features
feat: Added 'resume' and 'autoResume' options to Manager configuration.
Fixed Issues
fix: Corrected 'Session-Id' handling in WebSocket headers, now conditionally set based on manager options.
fix: Updated 'requestedBy.userData' handling in Player.ts to ensure proper data structure.
Chore
chore: Version bumped to 4.4.6.
chore: Removed 'movePlayersOnReconnect', 'autoResume', and 'resume' from test bot manager options.
Version v4.4.4
Fixed Issues
fix: User-Agent string in headers updated with correct version information.
fix: Typings and SourceManager settings updated; improved error handling and added debug logging for node raw events.
fix: Spotify endpoint change addressed for token fetching.
fix: Bot settings updated for new Lavalink server configuration; nowplaying and search commands enhanced for better track information display.
fix: User-Agent version in headers for consistency.
fix: Deezer URL matching and fetch logic enhanced for short links.
fix: Error throwing replaced with debug logging for Deezer API request failures.
fix: Corrected 'Session-Id' handling in WebSocket headers, now conditionally set based on manager options.
fix: Updated 'requestedBy.userData' handling in Player.ts to ensure proper data structure.
New Features
feat: New GitHub Actions workflow for publishing approved pull requests.
feat: New Database class introduced for data persistence.
feat: SearchResult class added to encapsulate search results.
feat: Added 'previousInArray' option to Manager options.
feat: Added 'attempt' property to IVoiceState.
feat: Added player control buttons and commands to test bot.
feat: Added 'logFile' option to Manager options for logging.
feat: Added 'movePlayersOnReconnect' option to Manager options.
feat: Added 'autoResume' and 'resume' options to Manager options.
feat: Added replay, restart, and transferNode methods to Player class.
feat: Added getPlayers and getPlayersCount to Node class.
feat: Added all getter to PlayerManager.
feat: Added queueEnd event to IEvents.
feat: Added IRESTGetPlayers interface.
Refactors
refactor: Manager's search method now returns SearchResult directly.
refactor: Manager's packetUpdate method is now async.
refactor: Manager's attemptConnection now includes debug logging and an attempt flag for voiceState.
refactor: Player constructor now uses Structure.get for Queue, Filters, Listen, and Lyrics.
refactor: Player's play method now calls isVoiceStateAttempt.
refactor: Player's skip method now handles autoPlay.
refactor: NodeManager and PlayerManager now use Structure.get for Node and Player creation respectively.
refactor: MoonlinkFilters renamed to Filters, and validation added for filter setters.
refactor: Structure class moved from src/core to src/Utils.
refactor: Queue methods now update database.
refactor: Rest class now includes patch method.
refactor: Track's requestedBy property now uses userData.
refactor: Player's setVoiceChannelId, setTextChannelId, setAutoPlay, setAutoLeave, pause, resume, seek, setVolume, setLoop methods now update database.
refactor: Node's message handling improved with debug logging and auto-resume logic.
refactor: NodeManager now uses UUID for node identification.
refactor: PlayerManager's create method now uses UUID for node identification.
refactor: PlayerManager's delete method now deletes player and queue data from database.
refactor: isVoiceStateAttempt moved to PlayerManager.
Chore
chore: .gitignore updated to ignore docs/.
chore: package.json and package-lock.json updated version.
chore: Added .prettierrc.
chore: Updated node engine version.
chore: Updated dependencies.
chore: Added moonlink.log to .npmignore.
chore: Added dist/src/datastore to .gitignore.
Documentation
docs: README.md updated with new example code for Discord bot, including slash commands and player controls.
Version v4.2.1
Fixed Issues
fix: User-Agent string in headers updated with correct version information.
fix: Typings and SourceManager settings updated; improved error handling and added debug logging for node raw events.
fix: Spotify endpoint change addressed for token fetching.
fix: Bot settings updated for new Lavalink server configuration; nowplaying and search commands enhanced for better track information display.
fix: User-Agent version in headers for consistency.
fix: Deezer URL matching and fetch logic enhanced for short links.
fix: Error throwing replaced with debug logging for Deezer API request failures.
New Features
feat: Deezer source integration added with configurable options.
feat: Spotify source implementation refactored.
feat: Resolve method added to Track class for plugin-specific track resolution.
feat: Spotify autoplay functionality implemented for players.
feat: New GitHub Actions workflow for publishing approved pull requests.
feat: New Database class introduced for data persistence.
feat: SearchResult class added to encapsulate search results.
feat: Added 'previousInArray' option to Manager options.
feat: Added 'attempt' property to IVoiceState.
feat: Added player control buttons and commands to test bot.
Refactors
refactor: Manager's search method now returns SearchResult directly.
refactor: Manager's packetUpdate method is now async.
refactor: Manager's attemptConnection now includes debug logging and an attempt flag for voiceState.
refactor: Player constructor now uses Structure.get for Queue, Filters, Listen, and Lyrics.
refactor: Player's play method now calls isVoiceStateAttempt.
refactor: Player's skip method now handles autoPlay.
refactor: NodeManager and PlayerManager now use Structure.get for Node and Player creation respectively.
refactor: MoonlinkFilters renamed to Filters, and validation added for filter setters.
refactor: Structure class moved from src/core to src/Utils.
Chore
chore: .gitignore updated to ignore docs/.
chore: package.json and package-lock.json updated version.
Documentation
docs: README.md updated with new example code for Discord bot, including slash commands and player controls.
Version v4.0.2
Fixed Issues
fix: Player stop method now correctly clears the queue, preventing unintended skips.
fix: Player destruction logic improved in stop method, allowing proper player disposal.
fix: Default password for nodes is now correctly set to "youshallnotpass" if not provided.
fix: Search functionality now correctly handles sources not explicitly present in source variables and includes 'deflate' in 'accept-encoding' headers for improved compatibility.
fix: User-Agent string in headers updated with correct version information.
fix: Typings and SourceManager settings updated; improved error handling and added debug logging for node raw events.
fix: Spotify endpoint change addressed for token fetching.
fix: Bot settings updated for new Lavalink server configuration; nowplaying and search commands enhanced for better track information display.
Refactors
refactor: makeRequest function in Utils.ts now handles non-JSON responses gracefully by attempting to read as text.
refactor: Manager's loadTracks method now returns early if loadType is error or empty.
refactor: Player constructor now checks for NodeLinkFeatures or node.info.isNodeLink for Listen and Lyrics initialization.
Miscellaneous
misc: Version bumped to 4.0.2.
misc: Debug message for exceptions in Node.ts now stringifies the payload exception for better readability.