Key: [+] added, [-] removed, [~] modified, [!] important.
- [~] Changed all deprecated code to match new standards.
- [~] Attempted to mitigate issues with audio stopping prematurely.
- [~] Updated dependencies -> JDA 4.3.0_283
- [!] Migrated language files directly into resources folder to facilitate community translation.
- [+] Added support for multi-embedded messages.
- [~] Updated MessageDispatcher to match new JDA standards for embedded messages.
- [~] Fixed bug with TrackScheduler not displaying correctly on track start.
- [~] Fixed bug with i18n not formatting sanitiser string / typo.
- [~] Minor formatting changes.
- [~] Updated dependencies -> JDA 4.3.0_281, gson, snakeyaml.
- [~] Improved [event] to include host / better display participants.
- [~] Updated dependencies -> JDA 4.2.1_262, MySQLConnector (.25).
- [!] Refactor Command superclass to be kinder to its subclasses.
- [~] Fix permissions bug with connecting to audio channels.
- [~] Updated dependencies -> JDA 4.2.1_260, MySQLConnector, Jackson.
- [!] Started adding i18n (internationalisation) support.
- [!] Stripped out LavaPlayer/NAS. (I think they're unnecessary due to LavaLink)
- [+] Partial support for French language.
- [+] Added [language] setting to allow uses to switch between languages - default English.
- [+] Updated dependencies.
- [-] Removed jcenter as known deps have updated now.
- [!] Repackaged com.yuuko.commands.* to com.yuuko.modules.*
- [!] Updated Gradle to version 7.0-rc-1.
- [!] Updated Java to version 16.
- [~] Updated dependencies -> JDA 4.2.0_250.
- [~] Refactor isNumber() to isNumeric() in Sanitiser.
- [~] Fix small bug with [reactionrole].
- [!] Repackaged project from com.yuuko.core.* to com.yuuko.*
- [~] Updated Module to detect commands automatically.
- [~] Improve use of reflection on startup, making explicit module declaration redundant.
- [~] Removed InteractionCommand abstraction layer as it is fairly unnecessary.
- [~] Fix old bug where channel level permissions weren't being respected.
- [~] Removed redundant utility functions.
- [~] Updated [about] to give more useful information regarding the bot.
- [~] Change the guild on-join message to a non-embedded format to catch edge cases without permissions.
- [~] Fix for [UKParliamentPetition] command where json is null.
- [~] Updated dependencies.
- [!] Changed version numbering (again) to the nicer minecraft snapshot format "YYwWWr".
- [~] Potential fix for multiple audio related problems. (playlist silence/hanging players)
- [~] Fix for [anime] command not being able to parse currently airing anime.
- [~] Added global_prefix to config.yml
- [~] Updated dependencies.
- [+] Re-implemented [osrs] command for all of your old school runescape stat needs.
- [~] Updated dependencies.
- [!] Added version 1 of [event] command, allowing users to setup future events. (bugs expected)
- [+] Added [eventchannel] command to allow for easy setup of the event channel.
- [~] Modified [commandlog] and [moderationlog] changing invocation and internal logic.
- [+] Added message event metric tracking. (going to be used for website)
- [~] Refactored MessageHandler to MessageDispatcher, made all methods return booleans.
- [~] Merged AudioMetrics and CacheMetrics tables since they relate to the same kind of data.
- [~] Fixed issue with bind checks in CommandExecutor
- [~] Changed possible input for Bind command, removing multi-channel single-command binding.
- [!] HAPPY NEW YEAR!
- [!] Added Patreon link to [about]. (we can dream)
- [~] Updated dependencies or something.
- [~] Updated dependencies.
- [~] Fixed very old bug related to embed permissions checking.
- [!] Major update of several commands/systems to enable sharding. (Metrics/Database)
- [+] Added [restart] command to allow shards to restart if they have been shutdown.
- [~] Several refactors/simplifications of commands, unrelated to sharding.
- [~] Updated included sql file to reflect database changes.
- [~] Rewrite ReactionRoleCommand.
- [~] Modified Database connection to help with self-host.
- [~] Various bug fixes. (roll command, mute roles bug)
- [!] Change source compatibility from Java 14 to Java 15.
- [!] Upgraded to Gradle 6.7
- [!] Updated configuration system, moving from crude txt to yaml implementation.
- [!] Updated all api systems to use yaml implementation.
- [!] Added setup methods to create any missing API/Config files on startup. (step towards self-hostable release)
- [~] Updated dependencies.
- [~] Added utility method to Api class for automatic command disabling.
- [~] Rewrote how modules store commands to prevent every command from being initialised twice on setup.
- [~] Implemented check for lavalink nodes to prevent bot from joining if none are available.
- [~] Rewritten most of the minor audio commands, making them easier to read and largely more concise.
- [~] Refactored [play], [playnext], and [background] to remove large parts of audio load logic.
- [~] Starting optimising SQL queries - reducing overall number.
- [~] Small changes to configuration both formatting and logic.
- [~] Small changes to AudioManagerController and TrackScheduler.
- [~] Added new internal function to ApiManager
- [~] Variety of small bug fixes.
- [-] Removed [redb] command as it was unnecessary.
- [!] Implemented system wide cooldown system, with [nuke] getting a default of 5 seconds.
- [~] Updated [nuke] to check if channel is of type news.
- [~] Simplified database cleanup on message/channel delete.
- [~] Nerfed [nuke] to reduce channel deletion abuse.
- [~] Updated dependencies.
- [!] Remove/Patch code the uses privileged intents. +2
- [!] Removed references to guild members in the database.
- [~] Fixed numerous bugs. (forgot to note them)
- [~] Updated dependencies.
- [-] Removed [newmember] and related commands.
- [~] Updated help command to remove mention of a website.
- [~] Updated dependencies.
- [-] Removed the event metric logging.
- [+] Added [playnext] command which allows users to add a song/playlist to the front of the current queue.
- [~] Updated dependencies - JDA, OkHttp, Jackson, Lavaplayer, MYSQLConnector.
- [-] Removed DivineDiscordBots from vote command and removed integration.
- [~] Improve [clear] command usability.
- [~] Updated dependencies.
- [-] Removed [command] command.
- [~] Improved [bind] command to allow binding of all modules at once.
- [~] Moved [bind] command from utility module to core.
- [~] General code improvements, e.g. upgrading old switch statements to new Java14 enhanced variants.
- [!] Sorry the bot was down for so long, a mixture of funding and motivation brought the project to an end, but now it's back :) (Also Happy Easter!)
- [~] Updated all dependencies.
- [-] Removed [channel] command.
- [-] Removed [advertise] command.
- [!] HAPPY NEW YEAR!
- [~] Updated lots of older dependencies! (yay!)
- [~] Fixed issue with tracks not stopping when skip command is used with nothing in the queue.
- [!] Changed version control for the last time. (hopefully)
- [+] Added cache metrics to check performance of new feature. (yyyymm[revision]n)
- [~] Updated dependencies (as always!)
- [!] Changed LavaLink-Client to a custom implementation.
- [+] Added a very-basic search cache for audio commands save on the api quota.
- [~] Rewrote YoutubeSearchHandler, removing the 1 item search function. (since it has no impact on quota)
- [~] Updated dependencies (multiple times).
- [~] Updated README to reflect external changes.
- [!] Working on other projects so updates may be slower than usual.
- [~] Migrated all of the boolean-based settings such as [djmode] and [deleteexecuted].
- [~] Bumped dependencies to their latest versions.
- [~] Updated jackson dependency to .pr3.
- [~] Migrated the [modlog] and [comlog] commands to the new category.
- [~] Migrated the [newMember] command, also updating it.
- [!] Started moving settings from Settings command to their own command category.
- [~] Migrated the [prefix] command to the setting category.
- [~] Migrated the [starboard] command and gave it an update.
- [~] Refined RequestHandler to be more compact without some unnecessary verbositys.
- [~] Replaced the filtering portion of the [nuke] command with a much more elegant solution.
- [~] Modified permissions for the [play], [search] and [background] commands.
- [~] Modified the CommandExecutor to specifically check audio channels for permission overrides before trying to connect.
- [~] Updated dependencies, OkHttp 4.2.0, Lavaplayer 1.3.22
- [~] Fixed minor dialogue error which may have caused confusion with new users of the bot.
- [~] Modified MessageHandler to hopefully squash the context exceptions that keep being thrown related to permission.
- [!] Switched to a self-maintained experimental version of JDA, migrating it to OkHttp 4.
- [~] Fixed MessageDeleteJob to actually work instead of just removing messages immediately.
- [~] Updated build.gradle to use Java 12 on JitPack. (hopefully)
- [-] Removed unused Brotli dependency.
- [!] Swapped out the Reflections package to the forked/maintained Reflections8 which depreciates the use of Guava.
- [~] Updated dependencies, notably, Jackson to 2.10.0.pr2 and OkHttp to 4.1.1.
- [+] Added [horoscope] command.
- [~] Updated dependencies to their latest versions.
- [~] Fixed setting which had a wrong database value causing incorrectly check if the setting was enabled.
- [+] Added new setting which allows welcome messages to be automatically deleted after a minute.
- [~] Refactored Settings command to be more "iffy" and to instead use a HashMap.
- [+] Added AudioMetrics to track how many songs are in queue and also how many players/active players there are.
- [~] Modified DiscordMetrics to queue instead of complete, may result in 0 values, but prevents timeouts and subsequent exceptions.
- [~] Updated a couple of dependencies, namely JDA and Lavalink-Client
- [~] Updated OkHttp to 4.1.0 from 4.0.1.
- [~] Updated RequestHandler to utilise the new BrotliInterceptor introduced in OkHttp 4.1.0
- [~] Updated JDA to 4.0.0_39 stable from BETA_32.
- [~] Updated Lavaplayer to 1.3.20 from 1.3.19.
- [~] Modified RequestHandler to be able to return Jsoup's Document object.
- [~] Updated JDA to 4.BETA.0.37 from 32 and Jackson to 2.10.0.pr1 from 2.9.9.1.
- [+] Added [shutdown] command to allow /proper/ termination of the application and its dependencies.
- [~] Improved some of the documentation used the {@link} tag for easier navigation.
- [~] Rewrote most of TrackScheduler and un-verbosified the YoutubeSearchHandler amongst other commands.
- [~] Started using OkHttp to retrieve and Jsoup to parse instead of purely the latter since there is a significant performance increase. (~50% in non-api calls)
- [~] Rewrote the audio management system to make things more predictable.
- [~] Minor refactoring to several methods and field names.
- [-] Scrapped plans for an ExceptionMetrics class since other methods are sufficient.
- [-] Removed LavaLink utilities since they became unnecessary.
- [~] Moved back over to the official Lavalink-Client release after my PR was merged.
- [~] Updated to a stable version of ddblAPI.java that I released.
- [~] Dozens of little optimisations and fail-fasts for both readability and performance.
- [+] Added [rule34] command which returns a random image from the rule34 website.
- [~] Updated MySQL Connector to 8.0.17 from 8.0.16.
- [!] Swapped the official Lavalink-Client for a custom forked version until the official release is updated.
- [~] Added some minor guarding relating to reaction roles and custom emotes. (debugging)
- [~] Better cleaning up abandoned audio players if a guild leaves mid track.
- [~] Updated Lavaplayer to 1.3.19 which fixes breaking changes to the youtube site.
- [~] Updated other dependencies, such as JDA 4.BETA.0.32 from 30.
- [~] Updated to JDA 4.BETA.0_30 from 23.
- [~] Updated Lavalink Client to
bf6c2ec
from the JDAv4 branch
- [+] Added [permissions] command to list the bot's currently granted permissions.
- [~] Simplified the GitHub command in preparation for an update.
- [!] Decoupled CommandExecutor from each Module instance, making it much more efficient.
- [~] Refactored Command class to take objects of type Module instead of unknown classes extending Module.
- [~] Updated to JDA 4.BETA.0_23 from build 22.
- [~] Minor refactoring of CommandExecutor, and MessageHandler classes.
- [!] Migrated from JDAv3 to JDAv4
- [~] Updated dependencies to match those compatible with JDAv4
- [~] Split up PING to GATEWAY_PING and REST_PING in light of new changes.
- [+] Added new method to the Sanitiser class to scrub strings of special characters.
- [~] Added static BASE_URL field to most commands where a URL is used every execute.
- [~] Improved guarding of the [nuke] command.
- [~] Moved [urban] command from nsfw module to media since it's a better fit, although it might not bit the final home.
- [~] Updated dependencies to be the correct versions for JDAv3.
- [~] Modified the MessageEvent object to be able to hold both an object of Module and of Command, effectively compressing parameters.
- [~] Fixed a couple of smaller superficial mistakes such as the [cat] command returning incorrect usage information.
- [~] Fixed bug with lyrics command returning no data but with headers that imply data.
- [~] Modified LavaLink node loading to allow virtually unlimited nodes.
- [~] Refactored command and module classes, adding the previous checks to the command executor.
- [~] Refactored dbProvisioning to just dbProvision to match current naming conventions
- [+] Added [logm] command which allows me to toggle metrics logging at any time.
- [~] Fully revamped the tracked event metrics to be more helpful over what kind of event was being triggered. (more generic)
- [~] Finally fixed another long running bug with the nuke command and how it is currently handled.
- [-] Removed database metrics as the metrics system is being simplified greatly.
- [-] Removed the bloated Discord metrics since I don't care about number of channels, emotes and whatever the third thing was.
- [+] Added [advertise] command, allowing servers to advertise on the website.
- [+] Started logging member counts for each server, for use related to the advertise command.
- [+] Started logging server icons, for use related to the advertise command.
- [+] Started logging server splash, for use related to the advertise command.
- [~] Modified the reaction role processor to be more streamlined. (was over-engineered)
- [!] Migrated from BasicDataSource to HikariDataSource, keeping the same driver.
- [!] Improved security between all of yuuko's servers, also isolating the database to its own server.
- [+] Added [joke] command which just spams out dad jokes. (essentially free feature)
- [~] Made embedded error messages more consistent across the board.
- [+] Added [advice] command using api.adviceslip.com which is quick and easy.
- [+] Added abstraction to interaction by subclassing Command into InteractionCommand, implementing a LocalThread random function.
- [+] Added an animal module along with four commands to kick it off, namely [cat], [fox], [dog] and [bird]
- [~] Refactored the whole world module and put it into media since they're quite similar.
- [~] Fixed a bug with the [lyrics] command which was caused by /extra/ long songs such as Rap God by Eminem.
- [-] Removed the [countdown] command as it was largely unused and had limited functionality.
- [~] Updated dependencies to newest possible without breaking other dependencies @JDA && OkHttp
- [~] Refactored ApplicationProgrammingInterface to simply Api and put it into its own package along with an ApiManager class.
- [~] Refactored RequestHandler from the utilities package to its own IO package along with RequestProperty
- [~] Refactored MessageEvent package from extension to entity.
- [~] Made the [nuke] command more forgiving regarding invalid input.
- [+] Added an audio timeout feature which will make Yuuko leave an audio channel after 5 minutes of nothing being played.
- [~] Refactored all of the audio commands to remove some unnecessary method calls.
- [~] Refactored JsonBuffer to RequestHandler since it doesn't necessarily return Json.
- [~] Refactored Metrics packages to make more sense.
- [~] Took care of some of the long term warnings IntelliJ was throwing at me.
- [~] Rewrote the [efukt] command after further analysing some html source, appearing to fix a malformed URL bug.
- [!] Refactored the core GenericMessageController to GenericGuildMessageController to stop Yuuko listening to non-guild messages.
- [!] Refactored the core GenericMessageReactionController to GenericGuildReactionController to stop Yuuko listening to non-guild reacts.
- [~] Changed commandlog to comlog on the backend to match with the modlog setting.
- [~] Updated multiple methods parameters to reflect an old change that didn't previously need modification.
- [~] Modified the about command to include the 5 latest commits from GitHub to show progress.
- [~] Gave some of the core commands a visual revamp, commands that have been improved are [about], [help], [settings] and [shards]
- [~] Improved the starboard setting to list the number of stars that the message has received. x2
- [~] Fixed a legacy bug which caused the [nuke] command to remove 1 less message than expected.
- [~] Plugged up the final okhttp leak which was caused by when things went wrong and didn't close properly.
- [-] Depreciated the legacy :pinpush: pinning feature for the starboard setting. (they're functionally the same thing)
- [~] Added command execution time to metrics for extra stats. (Ooo)
- [~] Fixed reoccurring bug involving case sensitivity and commands.
- [~] Fixed bug which would cause exceptions when using the play command while not in an audio channel.
- [~] Modified how the [urban] command is categorised, making it nsfw.
- [~] Refactored string formatter into appropriate package.
- [~] Converted most of the string arrays (modules, commands, permissions) to lists, in most cases being more efficient.
- [~] Updated [github], [kitsu] and [osu] commands to experiment with new formatting.
- [~] Added new experimental String formatter to avoid multiple method calls for formatting strings.
- [~] Updated dependencies and updated code to prevent potential okhttp leaking.
- [+] Added [dance] interaction command as request by YuukoKanoe#2043
- [+] Added [pat] interaction command as request by YuukoKanoe#2043
- [+] Added [kill] interaction command as request by YuukoKanoe#2043
- [~] Refactored packages for DatabaseConnections and DatabaseFunctions.
- [~] Updated required permissions for [reactrole] to require MESSAGE_HISTORY.
- [!] Switched version formatting to have the most significant number first.
- [~] Refactored some of the newest code to be less verbose.
- [~] Added guards for null pointer exceptions where reacts come but the message is somehow null.
- [+] Added react role database functions and event hooks.
- [~] Finished [reactrole] command main code and guards.
- [~] Updated [urban] command to present the data in a better less intrusive way.
- [~] Updated documentation to match the current state of Yuuko.
- [+] Added base code for the [reactrole] command and feature in general.
- [~] Updated [syncguilds] to purge guilds from the database which are failed to sync within 24 hours (indicates redundant data)
- [~] Refactored [londonunderground] to just [underground] for pretty obvious reasons. (invocation was too long)
- [~] Who uses the main class anyway? (moved the remaining config code out of the main class)
- [~] Changed internals of how Modules and Commands are stored from List to Map which is much faster in all scenarios tested.
- [~] Fixed small bug which caused bot lists to be a single event behind the actual state of the bot.
- [~] Slightly refactored and modified several classes to make them more efficient.
- [~] Cleaned up the scheduler, combining some tasks and removing others altogether.
- [~] Added function to sync the guilds database on startup in case the bot was added to a server in downtime.
- [~] Migrated from HttpsUrlConnection to OkHttp for all API calls since it is regularly updated, modern and there and JDA already uses it.
- [+] Added DivineDiscordBotList integration.
- [~] Updated the shard statistics task to keep more accurate information since there were some discrepancies
- [~] Added extra shard information such as channels and ping to increase the quality of the information on the website.
- [+] Added lyrics command to enable users to lookup lyrics.
- [+] Added urban dictionary command because it's both free and easy.
- [~] Fixed some older bugs and dodgy commands.
- [+] Added new database connection class for the automatic provisioning of shards.
- [+] Added task to renew the shard's ID every 30 seconds to prevent it being cleaned up.
- [~] Migrated settings database from the main Yuuko application server to the web server where the metrics database is hosted to prevent duplicate databases.
- [~] Refactored AudioManagerManager to AudioManagerController for better naming conventions.
- [~] Changed the way shards are provisioned to allow dockerisation of the whole process.
- [~] Updated [choose] command to better represent a users choice and a basic statistic of that being chosen.
- [~] Updated dependencies to their latest versions.
- [~] Updated [help] to dynamically show the correct prefix for command usage and other such messages.
- [!] Removed dbModuleName field from module superclass, renamed all of the columns in the database, removing the module part. (saves space)
- [~] Updated [help] to show disabled commands as well as modules.
- [~] Updated [command] to allow resetting of individual commands instead of just all of them.
- [!] Added a subclass class to extend MessageReceivedEvent name MessageEvent allowing for much more powerful manipulation of events.
- [~] Refactored CommandExecutor, every command, module and relevant utility to work with the new wrapper class.
- [~] Refactored all module classes to be more memory aware instead of just arbitrarily creating new objects.
- [~] Fixed [command] which was suffering from the after effects of a previous refactor that went unnoticed.
- [~] Tweaked GenericGuildVoiceController to try and fix a bug which stops audio players from correctly being destroyed.
- [+] Added [petition] command to return UK Parliament petitions by given petition ID.
- [+] Added [natgeo] command to return the top headlines from National Geographic. (cause science and nature are rad)
- [~] Refactored MessageHandler to core package and out of utilities.
- [~] Refactored certain utilities from the misc util class to their own DiscordUtilities class.
- [~] Updated Event Metrics to include more specific data about which types of user is behind each event, also added messages sent metrics.
- [~] Added new job/task to clear the database of anything over 6 hours old, after 6 hours of being online. (and then every 1 hour);
- [~] Removed listening for numeric values between 1-10 and the word cancel in GenericMessageController and refactored the class.
- [~] Altered how [search] works, you now need to use -search or -search cancel to make the input less confusing.
- [~] Refactored [linestatus] to [londonunderground], although it's longer, it's less ambiguous.
- [~] Modified structure of settings, making them more like a command or module.
- [~] Improved the JsonBuffer class to support unlimited extra headers, this required adding a RequestProperty class.
- [~] Added a send permission check utility to MessageUtilities and every method in MessageHandler to prevent
WRITE_PERMISSION
exceptions. - [~] Finished translating MessageHandler.sendException() to log.error();.
- [-] Removed unnecessary methods from MessageHandler, including sendException since it is now depreciated.
- [+] Added support for custom welcome messages using the newMember setting.
- [~] Refactored the command executor to make it easier to read and maintain, being such a core part of functionality.
- [~] Added TextUtility function to be able to resolve tokenized messages containing the %user% and %guild% tokens.
- [+] Added [countdown] command which allows you to check how long it is until a certain date.
format dd/MM/yyyy
- [~] Implemented new sanitiser function which allows date checking.
- [~] Implemented new text utility which returns a verbose timestamp.
- [~] Automated the [help] command so it doesn't need to be manually updated again.
- [~] Changed the formatting for command usages.
- [~] Made small changes to satisfy good practice and to improve code quality, such as parsing booleans instead of .equals("1");
- [~] Refactored DatabaseFunctions into CommandFunctions, GuildFunctions and ModuleFunctions respectively to break up the code.
- [~] Refactored key method names to be more consistent with my usual code style.
- [+] Added [command] command which allows users to disable/enable individual commands either by channel or globally on a server.
- [+] Added the base of a [reddit] command which will enable users to grab the latest post from any subreddit. (Soon)
- [~] Refactored [server] to [guild] to reflect how it's officially named.
- [~] Modified ping command to say pong like every other ping command ever.
- [~] Fixed a small issue with stop commands being issued by the lonely check.
- [+] Added [ping] command, because it seems like users appreciate small commands as much as larger ones with more information.
- [~] Minor refactoring to metrics classes to make things a little more concise.
- [+] Added [seek] to allow seeking of the currently playing track.
- [~] Updated Lavalink utilities to add quality of life changes.
- [~] Fixed [current] command to actually show correct timestamp.
- [~] Minor fixes to the spoilerify and eightball commands.
- [~] Updated dependencies to their latest versions.
- [+] Added [8ball] command so people can get some more RNG in their lives.
- [+] Added [flip] command for more RNG, because they're free.
- [~] Updated dependencies to their latest versions.
- [~] Minor refactoring to various commands.
- [~] Fixed some minor bugs with the recent changes.
- [~] Altered the new [roles] command to give it better guarding in guilds with many, many roles.
- [~] Updated help command to reflect recent changes.
- [+] Added [roles] command to return a list of the guild's roles to the user.
- [~] Refactored moderation log setting to be more generic internally.
- [+] Added [avatar] command so users can look at other user's avatars... but bigger.
- [~] Updated moderation commands to check role hierarchy before trying to do anything.
- [~] Changed Sanitiser to take an optional parameter to silence feedback from its results.
- [~] Changed how the [ban] command works, it turns out I didn't realise what one of the ban parameters was this whole time.
- [~] Updated dependencies, namely JDA 3.8.2 and okhttp 3.13.1.
- [+] Added [github] command which allows users to lookup github repositories and return some information about them.
- [+] Added [spoilerify] command which returns the raw string for those really annoying 'every character' spoiler messages.
- [~] Improved the Configuration class, adding everything that doesn't require JDA to be built first and logging each step to console.
- [-] Removed the Cache class and moved everything into more appropriate places, with 90% of it going into the Configuration class.
- [~] Refactored executeCommand to onCommand to be more consistent with naming conventions.
- [~] Finished mod log, hooking nuke, ban, kick and mute instead of relying on JDA events.
- [~] General refactoring and code maintenance.
- [+] Added mod log setting, to log bans, unbans, message deletes, etc.
- [~] Modified command log from the old inline
version
to use embeds instead. - [~] Changed timestamp of several commands to use embed timestamp feature instead of formatting own timestamp.
- [~] Modified the [ban], [kick] and [muted] commands to allow input of ID strings instead of always tagging the user.
- [~] Fixed small issue with the track scheduler which wouldn't reset the looping status when the player is destroyed and recreated.
- [+] Added a vote command to show users where they can vote for the bot.
- [~] Refactored [embarrassed] to [blush] for fairly obvious reasons.
- [~] Refactored [repeat] command to [loop], also changed the functionality to loop the whole queue instead of just the current song.
- [~] Updated the help command to reflect changes.
- [~] Fixed a bug that stopped the modules command from working correctly. (just another missed rs.next() sigh)
- [-] Removed the [modules] command and combined it with the regular module command to achieve dual functionality.
- [+] Added [kiss], [pet], [embarrassed] interactions.
- [+] Added an NSFW tag on a command by command basis instead of just per module.
- [+] Added Lavalink utilities class to cut down on verbose chained methods.
- [~] Fixed bug present since 21-01-2019_3 where bot wouldn't leave channel when everyone else has.
- [+] Added [lavalink] command to be able to add/remove lavalink nodes on demand.
- [~] General fixes, structural improvements and comments.
- [+] Added [shards] command to give the user some basic information about the bot's current shards.
- [~] Migrated from pure Lavaplayer to using Lavalink for audio, in preparation for when the bot is sharded (not necessary but wanted)
- [~] Migrated from JDABuilder to DefaultShardManagerBuilder.
- [~] Fixed some minor bugs.
- [+] Added a starboard feature... everyone loves those right?
- [~] Refactored all of the non-boolean settings into their own settings classes and also refactored the database to allow the commandLog and member welcoming to be customised.
- [~] Moved settings from being stored in the Cache class and initiated in the main class to being parked in the CommandSettings class.
- [~] Shortened commandPrefix in the database to simply prefix since there is no other type of prefix to describe.
- [-] Trimmed some excess fat that was no longer needed.
- [~] Added a GenericTextChannelController to check when channels are removed to update bindings appropriately.
- [~] Refactored parts of the DatabaseConnection subclasses into a DatabaseConnection superclass.
- [~] Made all of the methods in the SettingsDatabaseFunctions class static since individual instances of database classes were unnecessary.
- [~] Moved all of the connection logic for all database functions into a try with resources structure to ensure the prevention of database lockups. (which happened today somehow)
- [~] Migrated the GenericEventManager to use the correct logger.
- [~] Refactored module package to commands to keep the intent of the package clear. (everyone knows what a command is, but maybe not module in this context)
- [~] Refactored the isChannelNSFW function from the Module super class to the Utils class.
- [~] Updated dependencies to their latest versions.
- [~] Modified the [bind] command, where giving no parameters will returns a list of binds.
- [~] Refactored all of the database bind functions from the DatabaseFunctions class into it's own respective class.
- [~] Updated the [bind] command to make it less scuffed, properly checking parameters, also now allowing multiple channels to be bound at once.
- [~] Updated the CommandExecutor, moving key logic from the GenericMessageHandler class.
- [-] Removed the last remnants of the setup command, since it wasn't actually used at all.
- [-] Removed all command logging functions that send data to the support server directly. (everything now goes to the metrics database)
- [!] Instead of using classical version numbers, from now on I'll be using the date, followed by a build number for that date. (trying to keep semantic versions is a hassle)
- [!] Migrated from Maven to Gradle, for the purposes of learning and increased build speeds. (apparently)
- [~] Made a number of changes to the database and it's internal logic.
- [~] Small number of formatting changes and other general house keeping.
- [!] Removed the Yuuko class self event manager and event code, creating a dedicated events package to put in it's place.
- [+] Added the Interaction module which as the name suggests adds interactions.
- [+] Added interactions: [poke], [hug], [attack], [bite], [angry], [cry], [laugh], [pout], [shrug], [sleep], [tickle].
- [+] Added a simple [choice] command which takes an undefiled number of parameters separated by commas and selects one of the choices.
- [~] Improved the [roll] command to give a better indication on what the roll is against.
- [~] Refactored Math module into Fun module to allow for a wider range of commands to be encompassed such as coin flips and other such commands.
- [~] Refactored utils package to utilities to actively try and make things more complete and professional.
- [~] Refactored the Statistics class to Metrics since they're the latter and not the former and give them an overhaul.
- [~] Refactored the scheduled events from the main class to their own scheduler package based on Avaire which is 1000% better.
- [~] Refactored database connections into their own package, and also started sending metrics to a separate server. (including commands)
- [~] Refactored both the Module and Command superclasses, changing method names and also changing the module field from String to Class<?> to improve efficiency all around.
- [~] Refactored every command and module for a better naming convention overall.
- [~] Refactored methods from the Utils class to their own respective MessageUtility and TextUtility classes.
- [~] Fixed a bunch of new and old bugs that have been discovered since the last release.
- [-] Removed M and C classes, instead using the Reflections package to improve command modularity greatly.
- [~] General code premature-optimisations here and there, mostly conversions from verbose loops to streams.
- [~] Upgraded the [nuke] command to conform with the new standard which was overlooked in Y-1.0.1.
- [~] Slightly optimised both the CommandExecutor and the GenericMessageController classes.
- [~] Greatly improved the nuking speed of messages older than 2 weeks. (In preliminary testing, more testing needed in real world.)
- [~] Increased [nuke] command's max channels from
5
to10
since the lower bound was the victim of some premature optimisations. - [~] Moved dev checking from CommandExecutor into the ModuleDeveloper class itself to save some precious nanoseconds.
- [~] Updated the [user] command to improve code quality and include some rich presence information where possible.
- [~] Updated the [queue] command to improve code quality and show some additional information about the queue such as total length and items in the queue. (much at the dismay to a certain man-child)
- [~] Updated dependencies to their latest versions and removed obsolete dependencies.
- [~] Refactored Sanitise to Sanitiser for peace of mind.
- [~] Refactored isNumber() from Utils to Sanitiser.
- [~] Updated [osu], removing signature image because of hassle and processing time, also removing POJO classes in exchange for the easier implementation added in Y-1.0.0.
- [~] Updated the [mute], [kick] and [ban] commands to correctly interpret messages, improve feedback and not throw unnecessary exceptions.
- [~] Upgraded the code quality of the [mute] command in particular, giving it a long overdue lambda overhaul, setting a new standard for code on the bot.
- [!] Completely rebranded the bot into something more personable instead of a random anecdotal name that only a few people will understand.
- [!] Bumped JDK version to 12 (early release) because why wouldn't you live life dangerously in production. (also, jdk 11 ssl is broken)
- [+] Put in place measures to allow for a web console to edit settings and also see status updates.
- [+] Added developer [reloadapi] command to be able to switch out API keys when needed.
- [+] Added new [tesco] command that allows you to lookup and price check items from the store (kind of a meme)
- [+] Added new [welcomeMembers] setting that currently sends a message when a new member joins and greets them.
- [+] New database stuff including join date, command logs (for debugging), lastUpdated (for debugging) and a few other minor things.
- [~] Modified the JsonBuffer class to use Gson and return JsonObject objects, allowing for cleaner code, also removing any previous POJO objects.
- [~] Modified Permission field in the Command class to be an array, allowing multiple permissions per command, modified related classes to accommodate for the change.
- [~] Heavily modified the database logic, tidied it up a bunch and now use pooled connections to increase database speeds. (12-20ms to 2-8ms @ about)
- [~] Heavily modified the API system, now allowing API keys to be reloaded and added on the fly.
- [~] Modified the [nuke] command. You can now tag channels instead of a value and those channels will be duplicated and the old versions deleted.
- [~] Updated the system clock to keep time in a more meaningful way that can be used and isn't pre-formatted.
- [~] Updated exception util to print the full stack trace so that debugging can be done more efficiently.
- [~] Updated JsonBuffer class to allow for extra additional headers.
- [~] Shrunk the [announceNowPlaying] setting to simply [nowPlaying] because it's easier to type and remember.
- [~] Fixed a number of old bugs the haunted the previous versions, obviously leaving a few behind (x3).
- [~] Cleaned up a LOT of the code, making it more readable and less redundant, moved Ping into Statistics from Cache, changed consoleOutput function to show more commands but less other information.
- [~] Moved duplicate code from the Moderation module into it's own method in the Utils class.
- [~] Updated the about section since everyone already knows the context of a discord bot...
- [~] Changed most of the embeds to include information about who used the command and bot version.
- [~] Increased complexity of the CommandExecutor class to take burden from other classes such as GenericMessageController and remove duplicate code.
- [~] Ensured that the M and C classes are reflection safe to stop exceptions & complaints at runtime.
- [-] Removed SystemClock class and replaced it with a ScheduledExecutor in the Yuuko class and increased update time to every 1 second. (takes up only 7 lines total)
- [-] Removed documentation about the [setup] command since people keep using it despite the bot already being setup and kicking it when it fails.
- [-] Finally removed the [unmute] command, combining it with the [mute] command as a toggle.
- [-] Removed [exclusion] command because it isn't used compared to the superior bind.
- [+] Introduced the profile module which is going to be the bases of the bots new level system and user commands. (Incubating)
- [+] Added [djMode] setting which allows servers to lock down key audio commands to those with the DJ role.
- [~] Edited the [kitsu] command so that the default functionality is show so users no longer need to type "show" as a parameter.
- [-] Removed [runescape] command since it isn't used and hasn't actually worked correctly for a while and just degrades the quality of the bot.
- [-] Removed [sum] command since it was just as poor as the runescape command and wasn't used anyway, who doesn't have a calculator?
- [-] Removed [wow] command for the same reason as the other two and it was a huge undertaking just to have it work correctly.
- [~] Fixed some minor bugs in track scheduler and settings classes.
- [~] Updated NSFW neko command api after it was recently changed and caused the command to stop working. Fix should be much more robust.
- [+] Added [announceNowPlaying] setting which allows users to set whether or not the next track is announced.
- [~] Refactored all boolean based settings into a single class using parameters instead.
- [~] Altered how database values are represented on the output, changed from camel case to uppercase.
- [+] Added cache to store miscellaneous pieces of data, starting to refactor the main class to decrease the complexity.
- [~] Added missing information from some of the commands.
- [~] Fixed problem where embed author doesn't allow markdown. (changed to title)
- [~] Removed bold text from majority of output, leaving it in only for distinguishing values.
- [~] Altered audio handlers to hopefully fix a long term issue without things breaking.
- [~] Modified all output and converted them into embeds since they look much 'richer'.
- [~] Refactored text related methods from the Utils class and moved them to their own MessageHandler class.
- [~] Updated the checking involved with the audio module, not allowing commands while not connected or allowing commands such as queue unless the bot is connected too.
- [+] Added NSFW [neko] command from neko.life, because that's just what some people like I guess.
- [+] Created CommandExecutor class to be the one stop shot for all command executions so they're guaranteed to be the same.
- [+] Created SystemVariables class to store certain command variables such as users who have started a search. (soon to be cache)
- [~] Completely overhauled the command/module system, shrinking the current line count by 6%. (400-ish lines)
- [~] Refactored ModuleTransport into ModuleWorld and shifted the weather command over to that module.
- [~] Overhauled the help command to actually be helpful, which is helpful.
- [~] Updated server command to include the server emotes (up to 1024 chars).
- [~] Changed formatting for a lot of the commands to make them look somewhat nicer.
- [~] Altered the way commands are checked, prefixes and commands can be capitalised however possible now and it'll still work fine.
- [~] Shrunk the play command down to make it more consistent for regular plays or through searching. (possible due to overhaul)
- [-] Removed the logging module and merged it into the settings command.
- [+] Added [settings] command... yep, there are finally server settings that you can toggle on/off, with the first being if the command message is deleted.
- [+] Added more shiny badges to the README.md part of the documentation.
- [+] Added a sanitiser utility class to check parameters of commands to ensure they meet the minimum number to correctly execute. (stops a lot of exceptions...)
- [~] Refactor [togglerepeat] to [repeat] because it is shorter, easier to type and simply a better alias for the command.
- [~] Refactor [setbackground] to simply [background] which is shorter and easier to remember with the former being unnecessarily long.
- [~] Changed class names for the commands changed in
2.2.0
to reflect their new command - [~] Finished the remaining exceptions so that they're all uniform and will send information to the correct place.
- [~] Altered the output of the console to happen once every 5 seconds instead of when message/react events are intercepted.
- [~] Fully altered the database to prevent SQL injections, since I wasn't happy with the previous solution. (kinda)
- [~] Changed all of the non-informative embeds to a grey colour since it doesn't blind you with brightness. (hopefully)
- [-] Removed [unsetbackground] and merged it into setbackground so it acts as a toggle instead of having 2 commands.
- [-] Removed [setprefix] and merged it into the settings command, also removing associated database functions.
- [~] Further added to the exception message to get concise and valuable data.
- [~] Added more checks to stop bot actions wasting CPU cycles.
- [~] Minor streamlining in the main class, very very slightly reducing size.
- [~] Updated dependencies, removing some of the obsolete packages that were still being packaged with the bot, reducing overall size by roughly 400kb.
- [+] Upgraded project to Java 11 since Java 10 has just become obsolete.
- [+] Added [addservers] dev command to quickly re-add all of the servers to the database in the event of a data loss.
- [+] Added SystemInformation class to store things such as ping, guild count, user count, message processed to prevent unnecessary REST calls.
- [+] Added [weather] command which allows users to return information about the weather in the given locale.
- [+] Added [kitsu] command which currently allows users to search up and return information about different animes.
- [~] Moved from a docker container of MySQL to an installation on the OS, which is much quicker.
- [~] Transitioned from setting all api keys and such as arguments to the .jar to a much easier to ready configuration file.
- [~] Edited formatting of module disabled message to give the user a better understand of which module it is.
- [~] Made GenericMessageController more efficient by doing a bot check immediately instead of after a database call.
- [~] Moved all System.out.println(); calls to a Utils function to make things easier to handle uniformly.
- [~] Edited the [efukt] command to remove an enormous description with every command.
- [~] Moved JsonBuffer from Utils to it's own class and package for related things.
- [~] Renamed TimeKeeper to SystemClock and removed some of the stuff unrelated to system uptime such as ping.
- [~] Refactored the game module into what is now a media module to allow for the new anime command and others in the future.
- [~] Increased the number of try/catches to help with further debugging.
- [~] Changed error messages from being sent in the console to being sent into the discord support server.
- [-] Removed [unbind] command and merged it into the bind command to reduce code duplication.
- [-] Removed [unexclude] command and merged it into the exclude command to reduce code duplication. (haha)
- [-] Removed [delchannel] command and merged it into the addchannel command to reduce code duplication. (sigh)
- [~] Changed/Updated depreciated code to fit in with current versions.
- [~] Updated dependencies to their latest versions to keep on to of everything.
- [~] Cleaned up some of the code to make it slightly more readable.
- [+] Added [osu] command, which allows the user to retrieve stats from either of the 4 modes.
- [+] Added a shiny new badge to README.md (yay)
- [~] Refactored [currenttrack] to [current] for ease of use.
- [~] Refactored [lasttrack] to [last] for ease of use.
- [~] Refactored [clearqueue] to [clear] for ease of use.
- [~] Refactored [wowcharacter] to [wow] for ease of use.
- [~] Refactored [rsstats] to [runescape] for ease of use.
- [~] Refactored World of Warcraft class to reflect changed.
- [~] Changed unicode to pasted emoji for some reason.
- [+] Added try/catch for message sending so things don't break if no write permission is given.
- [~] Edited a lot of the documentation to make the bot easier to use in the initial setup phase.
- [~] Changed the default custom prefix from nothing to
-
to aid in the initial setup and ease of use. - [~] Enhanced the console prints to give more valuable information about where things are going wrong.
- [~] Added a check to see and report to the user if the bot has the necessary permissions to work correctly. x2
- [~] Updated the [user] command to conform with nicer looking style format.
- [~] Fixed discordbots.org integration issue so it updates correctly.
- [+] Added NSFW module with an [efukt] command, forcing me to adopt Jsoup which is actually pretty good.
- [+] Added [clearqueue] command to easily clear the queue without having to remove and recall the bot.
- [+] Added [wowcharacter] command to allow character lookup in the format of 'realm -> character'
- [~] Updated dependencies to their latest respective versions.
- [~] Updated the help command and the join message to encourage users to join the support server if something goes wrong.
- [~] Updated the [clearqueue] command to allow for an optional parameter that clears a single track anywhere in the queue.
- [~] Updated the [server] command to conform with other similar commands.
- [+] Forced into 2.0.0 due to classpath change from e.g. yuuko.core -> com.yuuko.core
- [+] Added utils package to help break up the various utility classes.
- [~] Separated the controller class into separate generic event classes to isolate things a bit more.
- [~] Added missing permissions that weren't being checked, also added checks for overrides.
- [~] Finished and integrated the [mute] and [unmute] commands.
- [+] Added [mute] command (voice and text) to mute users with an optional reason.
- [+] Added [unmute] command to reverse a mute previous mute.
- [+] Added a cool looking banner to the console. :^)
- [+] Added a usage argument for every command, accessed via the [help] command.
- [+] Added a custom Utils module allowing for storage and shorted version of verbose methods.
- [~] Changed [bind], [exclude], [unbind], [unexclude], [delchannel] to allow reduced arguments, using the channel the command is executed in as the parameter.
- [~] Changed [ban] and [kick] to allow mentions as well as idLong to make it easier to moderate.
- [~] Changed the [user] command to use mentions instead of trying to find them by username.
- [~] Fixed oversight which broke YouTube/SoundCloud links.
- [~] Changed the 'no track found' message from just the URL to an actual message.
- [~] Rewrote README to use tables instead of just listing commands.
- [~] Major /minor/ change to the way commands are handled.
- [~] General clean up of unused code from previous versions.
- [~] Replaced some exception throws with feedback instead to make it more useful.
- [~] Added some overlooked functions from the execution timer.
- [+] Added a cleanup function for when the bot is removed from a server.
- [~] Remedied a problem that would only auto-skip a background track once.
- [~] Changed some of the emotes used as some of them weren't working correctly.
- [~] Updated dependencies to their latest versions at time of writing.
- [~] Remedied the [modules] command having a couple of minor issues.
- [~] More code shuffling to get more qualitative data in the console.
- [~] Modified server join function to deal with if permission isn't given for messages in general.
- [~] Finished the join SQL function. (Apparently I didn't finish it!)
- [+] Prints into console when new server is joined (name, server id).
- [-] Removed the 'fun' module, it was outdated and I can do better.
- [~] Edited the README file to clarify potential misunderstandings with the default prefix.
- [~] Remedied an unnecessary prefix for the roll command and updated the documentation accordingly.
- [+] Added command execution time in milliseconds but with original resolution of nanoseconds.
- [~] Changed the message delete procedure to only delete executed commands.
- [~] Fixed a bug involving binding multiple channels and then using a command in one.
- [~] Fixed a bug with the audio module that stopped playlists from working.
- [~] Fixed an issue which only allowed YouTube track to be played and not from SoundCloud, etc.
- [~] Altered the voice channel leave feature to work for all events instead of just leave.
- [+] Added a welcome message to give users the commands and some other information.
- [+] Added [setprefix] to allow admins to set their server command prefix.
- [+] Added a bind/exclude system for all of the modules, allowing users to decide where the bot works.
- [+] Added a function that makes the bot leave a voice channel if it is empty. (Nobody likes to be lonely! c:)
- [~] Changed how the whole command prefix system works, default prefix is now the bot's name.
- [~] Migrated from a set prefix to a global prefix.
- [~] Redesigned the whole database schema to fit with the new bind/exclude system.
- [~] Changed how the correct command is selected, making it exact and not /kinda/.
- [~] Altered [linestatus] to account for a rare condition with uppercase text, also to use HTTPS.
- [~] Altered [play] embed to display correctly if no image is found.
- [~] Major restructure of project packages, refactored music into audio and runescape into games.
- [~] Refactoring some of the audio classes to make them more efficient, added some error messages.
- [~] Dealt with a YouTube search bug that throws exceptions instead of intended functionality.
- [~] Changed return type of executeCommand from boolean to void to avoid jumping through hoops.
- [~] Updated the database to comply with refactoring and removed the dev setting.
- [~] Changed database from H2 to MySQL for production.
- [~] Split the database class into a connection class and a function class.
- [~] Resolved the oldest database 'bug' I've had which turned out to be a WHERE clause overlook. doh!
- [~] Fixed the [modules] command, issue was a late side effect of the many refactors.
- [~] Resolved issue with [search] where a search would return less than 10 results.
- [-] Became headless, as a result removed the Monitor class as it isn't used.
- [-] Removed custom module because it wasn't being used and it was a pain to maintain.
- [-] Stopped playing with lottie's tits. (Unset the default status)
- [~] Changed the structure of [currenttrack], [lasttrack] and [play] to give a little more info.
- [~] Altered the Monitor and TimeKeeper to reduce rate limiting.
- [~] Fixed [lasttrack] to actually show the last track and not the current.
- [~] Attempted to fix an uncommon bug where a track is queued as another finishes.
- [~] Fixed [search] cancelling not actually working.
- [~] Refactored UserInterface to Monitor since I only use it to monitor...
- [~] Changed field names in class M to match those of class C.
- [-] Removed obsolete end of constructor warnings for modules.
- [+] Added search command for music. [search]
- [+] Added about command. [about]
- [+] Added a check to the [linestatus] command that allows for a minified version
- [~] Changed the [linestatus] command to add more details for services that are not 'good'.
- [~] Another large refactor for modules similar to that of the commands refactor.
- [~] Rewrite of the controller; module selection down from 120 lines to 9. (Yes, 9)
- [+] Added a notice a the bottom of the README.md concerning a verified voice bug.
- [+] Added developer only command to change presence, finished refactor.
- [~] Moved all hardcoded configurations to program arguments. [args[]]
- [~] Changed [linestatus] embed format to inline fields, also added support for multiple statuses.
- [~] Heavily modified the TFL classes, removing roughly 90% since they were not being used.
- [~] Resolved the rest of the compiler warning I felt needed attention.
- [+] TFL London Tube service status command. [linestatus]
- [+] Last track command to retrieve the last played track. [lasttrack]
- [+] Repeat command to repeat the watermelon song over and over. [togglerepeat]
- [~] Included user's display picture in the [user] command embed thumbnail.
- [~] Resolved a ton of compiler warnings, including all performance warnings.
- [+] Added Changelog to actually keep track of what has happened throughout versions.