# To-Do List ## To be implemented Note that the tasks described here may not exactly be the same once implemented on the bot (for example command names or behavior can change). ### Features - [ ] Make `/info` and `/remove` autocomplete with items from the queue ### Bug Fixes - [ ] Enormous delay between each song ### Performance Optimizations - *nothing* ### New Commands - [ ] `/rmdupes`: removes duplicate songs from the queue - [ ] `/lock`: locks the bot to only the user who executed this command and administrators - [ ] `/save`: save the current queue to a playlist - [ ] `/load`: loads a saved playlist - [ ] `/list`: lists all saved playlists - [ ] `/delete`: deletes a saved playlist ---- ## Completed The completed tasks are ordered by completion date (most recent is at the bottom). ### Features - [x] A feature to restart the bot (so the CI server can restart it after deploying) - [x] Add buttons to command outputs * Create a `CommandAction` class that allows to emulate slash commands - [x] Support for Argon - [x] Support for Bandcamp - [x] Support for SoundCloud - [x] Disconnect the bot after 30 minutes of inactivity (`VoiceBase.playing` is `false`; do NOT check for `VoiceBase.paused`) - [x] Support for HTTP files - [x] If the URL given to `/add` is a playlist, add all the videos in that playlist to the queue - [x] Save history of played songs so it is easier to find songs that have already been played * The `/search` command can use autocompletion and complete with history results - [x] Pass titles through [YouToo](https://gitlab.minteck.org/minteck/youtoo)'s "magic" title parser - [x] `/queue` gives the duration (in minutes) of the entire queue - [x] Block playing songs that are longer than 10 minutes - [x] Volume normalization - [x] Make `/queue` more consistent - `01.` (`00:00`) Song name - [x] On `/queue`, show time when the playlist will be done - [x] Make `/lyrics` fetch lyrics from Bandcamp - [x] Prevent `RESTART` when the bot is playing - [x] Properly handle connection issues - [x] More logging - [x] History matches from SoundCloud result in corrupt entries - [x] Better loading items with cool messages (like what Discord did) ### Bug Fixes - [x] Connection reset for random reasons - [x] Webhook errors for random reasons - [x] Handle being disconnected by a server moderator (right click > Disconnect) * This will be harder than expected: class `VoiceConnectionEvents` in `@discordjs/voice` is totally undocumented. - [x] `/tmp/stream.ogg` is not deleted automatically - [x] Playing songs from Argon 2 times without wiping /tmp results in an error (BugCheck 0xD460A59A) - [x] Detect and prevent restart loops (more than 1 restart within 1 minute) ### Performance Optimizations - [x] On `QueueManager.add`, don't use both `ytdl-core` and the `yt-dlp` command to get metadata ### New Commands - [x] `/search`: search on YouTube instead of using the full video URL - [x] `/logs`: displays the bots logs - [x] `/lyrics`: get lyrics for the currently playing song (probably use [`genius-api-client`](https://npmjs.com/package/genius-api-client)) - [x] `/shuffle`: randomly changes the queue's order - [x] `/restart`: restart the bot - [x] `/random`: picks a random item from history and adds it to the queue - [x] `/about`: more user-friendly debugging information - [x] `/skipto`: skip to a certain item in the queue - [x] `/loopone`: repeat the current playing song instead of the whole queue (`/loop`) - [x] `/nowplaying`: shows info about the currently playing song - [x] `/info`: gets info about a song in the queue (who added, when, ...) - [x] `/clear`: clears all songs in the queue - [x] `/autodj`: Auto-DJ