From 7b872c29c99548cb3723bc3aced06e6421bcfdd2 Mon Sep 17 00:00:00 2001
From: Gareth Coles
- TODO: Write a proper changelog
-
+ This page contains historical changelogs for all Kord Extensions projects, taken from GitHub, Discord, and
+ this documentation site, slightly edited for better grammar and more sensible styling.
+
+ Please note that changelogs taken from Discord will have a more conversational tone.
+
+
+ Make the default translations provider scan through loaded plugins
+ (if the plugin system is enabled) to locate bundles provided by them.
+
+ As always, let me know how you get on!
+
+ It's time for another version bump, specifically to
+ This release contains the following changes:
+
+ As always, this release will be available once GitHub builds it, in about 15 minutes.
+ Let me know how you get on!
+
+ I've gone ahead and pushed an update to KordEx v2, which will be released as
+
+ I did not update Gradle to 8.10 as the licenser plugin we're using runs into a StackOverflowError with
+ that version.
+
+ If you're using the KordEx Gradle plugin,
+ there's nothing you need to do other than to update your Kotlin version to
+ This update's summary was published on this page.
+
+ This release targets
+ Additionally, as we're forced to use a beta version of Kotlin 2,
+ please note that IDEA's Kotlin plugin will erroneously display compiler errors that were caused by
+ bugs in earlier versions of Kotlin 2.
+ To be specific, expect errors regarding broken typing for generic types explicitly defined using
+
+ Thanks is due in particular to LustigerLurch for helping with the K2 porting work. Cheers!
+
+ This release is available
+ Checks have been updated to support more of Kord's built-in events
+ and now support more data from previously supported events, including:
+
+ It's time for a new snapshot -
+ This snapshot cycle begins with a change to choice converters. Specifically:
+
+ Choice converters now support chat commands.
+ (#137)
+
+ This is a new snapshot cycle because I want to be sure it doesn't break your existing bots.
+ If this is some functionality you've been waiting for, please thoroughly test your bots before updating!
+
+ This should be available in around 15 minutes, as usual.
+
+ And sorry for keeping you all waiting!
+
+ I've just pushed a new version of KordEx,
+ to update dependencies and align with Kord's new
+ This release will be available under
+ A new paginator feature!
+
+ This is a quick message to announce the release of KordEx
+ This also brings a new user-facing change — paginator chunking!
+ Requested by beerpsi, this allows you to specify a chunkedPages property in your paginator builders,
+ which will cause the paginator to display its pages in chunks of the given size.
+ This may be useful for paginators with a lot of small embeds.
+
+ When
+ As always,
+ Hello!
+ Today's update is potentially exciting for those of you using the Sentry integration,
+ bringing a few long-overdue changes.
+
+ Today's changes are part of
+ issue #260,
+ submitted by Pyrrha yesterday.
+
+ It's worth noting that
+
+ It is now possible to define what types of data may be submitted to Sentry via the new
+
+ When adding data to the
+
+ The configuration docs have already been updated if you need them.
+
+ As always, please give things a try and let me know how you get on!
+
+ While these new changes are designed to make it easier for you to comply with data protection laws
+ (such as the GDPR), please note that I am not a lawyer.
+ I'm also not qualified to make privacy-related decisions about your bots on your behalf.
+
+ I'm happy to fix any data leakage issues or improve the above systems,
+ but it's your responsibility to ensure that your usage of Sentry complies with any relevant privacy
+ laws.
+
+ The new KordEx snapshot cycle begins with
+ As always, feel free to give things a try, and let us know if you run into any issues!
+
+ This release targets Kord
+ As always, if you run into any problems, please let us know!
+
+ I've just gone ahead and pushed KordEx version
+ This release was pushed in part to address
+ #216,
+ which required breaking structural changes.
+
+ As always, let me know if you run into any issues.
+
+ Another quick update, KordEx version
+ This version tracks Kord
+ I've also begun rewriting the documentation using Writerside — you can keep an eye on that progress
+ here.
+
+ As always, let me know if you run into any issues.
+
+ Quick notification to announce the release of KordEx version
+ As always, let me know if you run into any issues.
+
+ I've just pushed KordEx
+ This is a dependency update version — KordEx is now built against Kord 0.11.0-SNAPSHOT
+ and makes use of Kotlin 1.9.0.
+ As always, please let me know if you run into any issues!
+
+
+ I've also added a small util -
+ This will be removed pretty quickly once Discord has fully migrated everyone, so be warned.
+
+
+ This release targets Kord
+ Please note that as of this release, the
+ Please be aware that as of this release, KordEx is now being deployed to these Maven servers:
+
+ KordEx releases will no longer be published to the Kotlin Discord maven repo.
+
+ As always, if you run into any problems, please let us know!
+
+ I've been hard at work, finally bringing an abstraction for Discord's modals to KordEx.
+ As of this message,
+ To use modals, create a class that extends
+ Within your new class, you can create variables that store widgets,
+ which can be created by using the
+ This introduces a new (nullable due to Kotlin's type system) parameter to your
+ Modal titles, widget labels, etc. are translatable and will inherit the bundle you're using in the
+ definition context — so, the bundle your component or command is using.
+ You can also define the bundle in your
+ I've just pushed up
+ Please note that all KordEx dependencies have been updated —
+ as usual, you'll find them in the
+ Let me know if you run into any issues!
+
+ KordEx 1.5.3-SNAPSHOT has been pushed to GitHub and is currently building.
+ However, there are a number of things to be aware of:
+
+ That last point is particularly notable because it turns out that Kotlin 1.6.20 is causing a lot of
+ problems for several projects.
+
+ In short, Kotlin 1.6.20 has showstopping issues that make me feel like it should never have been
+ pushed as a stable release.
+ The same goes for KSP 1.0.5, which only supports Kotlin 1.6.20.
+
+ While it's possible that your bots may build just fine with Kotlin 1.6.20,
+ and it's true that Kord has managed to move to Kotlin 1.6.20,
+
+ This release targets Kord
+ Please be aware that as of this release, the following Maven repos are no longer being mirrored by the
+ Kotlin Discord Maven server:
+
+ You'll need to update your buildscripts to correspond with these changes.
+ If you run into any trouble, you can always take a look at the KordEx template project again.
+
+ At the moment, the wiki hasn't been updated for these changes.
+ Unfortunately, I lack the time to update them quickly, but they'll get there!
+
+ As always, if you run into any problems, please let us know!
+
+ I've just merged KordEx 1.5.2-SNAPSHOT.
+ This new version of KordEx contains the new DSL-style converter builder system,
+ which additionally requires that your custom converters make use of KSP and the
+ This system is
+ You would update this by switching to the new syntax:
+
+ Of course, your IDE autocomplete will help you out here.
+ Additionally, please note that all coalescing converter functions have been renamed,
+ replacing
+ This release is our first "stable" release in quite a long time,
+ targeting Kord
+ We've done our best to keep things as compatible as possible, API-wise. Despite this, though, we've had no choice but to break a few things.
+ Highlights of this release:
+ There are far too many changes to list here.
+ The existing pages on the wiki have been rewritten for this release,
+ and we'd suggest taking a look at them to refresh your knowledge.
+ There's still documentation work that needs doing, but we'll get there!
+
+ As always, if you run into any problems, please let us know!
+
+
+ I decided to bump the version in line with the update to Kord 0.8.0-M6.
+ This release beings a bunch of underlying changes that people have been waiting for in Kord,
+ and it also brings the following fixes on top of the current snapshot work:
+
+ As of the latest push,
+ A lot of things have changed in this release. For an overview, take a look at
+ the tracking issue — but
+ I'll list some things you may be wondering below.
+
+ Every single command function has been replaced:
+
+ There are many, many other changes, big and small.
+ We'd massively appreciate it if people could start testing this release
+ and provide us with feedback on what's not working properly — and what needs changing.
+
+ If something is missing,
+ please leave a comment on
+ the tracking issue
+
+ The following issues were solved in this release:
+
+ Documentation work is still ongoing, and KordEx will see more changes as things are documented -
+ the documentation process makes it really easy to see (and change) things that don't make intuitive
+ sense.
+
+ The following issues were solved in this release:
+
+ This is a release to match Kord's hotfix, which fixes a regression that broke interaction
+ acknowledgements.
+
+ Redo the checks system, requiring calls to one of the
+ This release includes commits that address the following issues:
+
+ The following PRs were merged:
+
+ This is a huge release, and a massive milestone for KordEx.
+ There have been far too many changes to detail in this changelog — nearly 210 commits in total.
+ Some highlights include:
+
+ ... and much, much more!
+
+ If you're migrating from the previous stable version,
+ there's a slightly more in-depth overview of the changes in the docs.
+ Otherwise, we suggest treating this release version as an entirely new iteration of the KordEx
+ concept — most things have been changed,
+ and almost everything will need at least a minor tweak to get things to work.
+
+ As always, if you need help, contact us on Discord!
+
+ Chances since KordEx 1.4.0-RC6:
+
+ This release has tons of improvements, deprecations, new features and breaking changes.
+ Some of them are listed above,
+ but you should read the migration guide instead of simply relying on this release description.
+
+
+ Chances since KordEx 1.4.0-RC5:
+
+ This release targets Kord 0.7.0-RC.
+
+ Chances since KordEx 1.4.0-RC4:
+
+ This release targets Kord 0.7.0-RC.
+
+ Chances since KordEx 1.4.0-RC3:
+
+ This release targets Kord 0.7.0-RC.
+
+ Chances since KordEx 1.4.0-RC2:
+
+ Add
+ This will make optional converters still output parse errors and fail command parsing if
+
+ This release targets Kord 0.7.0-RC.
+
+ Chances since KordEx 1.4.0-RC1:
+
+ This release targets Kord 0.7.0-RC.
+
+ This is our very first properly versioned release!
+
+ KordEx 1.4.0 brings Kord 0.7.x support
+ (but we'll only release RCs until Kord releases a stable version).
+ Some changes:
+
+ As this is our first real release, this changelog will be a little lacking —
+ it does encompass
+ This release targets Kord 0.7.0-RC.
+
+ This is the final version of Kord Extensions for Kord 0.4.x.
+
+ This version is a quick update to bump the Kotlin version used for compilation to 2.0.20,
+ so we're no longer depending on release candidates.
+ Thanks to daksh7011 for his timely PR!
+
+ This version includes some small changes to the KordEx plugin.
+
+ This version should fix the KSP issues we've noticed recently.
+ Let us know how you get on!
+
+ This version involves a significant rewrite of the KordEx plugin, and some small changes to the Docker
+ plugin.
+
+ I've rewritten most of the plugin, making it more lazy and moving a lot of code out of
+
+ This, along with the other edits, introduces the following changes:
+
+ This release doesn't fix the KSP plugin issue — we're still working on that!
+
+ This version includes the following changes:
+
+ This version includes a small change to the KordEx plugin.
+
+ As the mappings (
+ This version includes a small change to the KordEx plugin.
+
+ When you have the KSP plugin applied,
+ the KordEx plugin automatically configures the annotation processor.
+ Now, the plugin will also configure the relevant source-sets,
+ so your IDE will be aware of KSP-generated files.
+
+ This version makes some changes to the KordEx plugin.
+
+ This release improves support for running bots in development
+ and provides a more sensible way to resolve the latest Kord version
+ (when
+ Add a new
+ This version makes some changes to the KordEx plugin.
+
+ The KordEx plugin is now ready for Kord Extensions 2 and is more resilient to metadata resolution
+ problems.
+
+ When using Kord Extensions 2, warn about v1 module names and rename them to match the v2
+ names.
+
+ This version makes a small change to the KordEx plugin.
+
+ For developers working on complex Gradle projects,
+ the plugin now supports an
+ This may be useful in multi-module projects where you want to define a "common"
+ module that depends on Kord Extensions and configure bots in other modules depending on that one.
+
+ This version adds a new plugin — the Docker plugin from the template repo.
+
+ This (relatively simple) plugin allows you to generate a Dockerfile based on a Kotlin DSL,
+ centralizing your project's configuration and allowing Docker to adapt to changes,
+ such as renaming a Gradle project.
+
+ For more information, see the documentation. It is pretty long!
+
+ This version targets the KordEx plugin.
+
+ This release includes the following changes:
+
+ This version targets the KordEx plugin.
+
+ This release includes the following changes:
+
+ This version targets the KordEx plugin.
+
+ This release includes the following changes:
+
+ This version targets the KordEx plugin.
+ I've made significant changes in this version, so please pay attention!
+
+ This release includes the following changes:
+
+ Support for building KordEx plugins via the new
+ Support for building KordEx bots moved to a new
+ The remaining settings haven't moved:
+
+ This version targets the KordEx plugin.
+
+ This release includes the following changes:
+
+ This version targets the KordEx plugin.
+
+ This release includes the following changes:
+
+ Merged PR #3 by DRSchlaubi - thanks!
+
+ Switch to KordEx Maven repo subdomains, which don't execute S3 commands.
+ These domains provide direct access to the R2 buckets storing the Maven artifacts,
+ and you won't be able to browse them directly.
+ The domains are:
+
+ This version targets the KordEx plugin.
+
+ This release includes the following fixes:
+
+ This version targets the recently released KordEx plugin with a bug fix.
+
+ This release includes the following fixes:
+
+ This version targets the recently released KordEx plugin with some improvements.
+ We'll update the KordEx template project to use the plugin once we publish this version,
+ and the Gradle plugin portal approves it.
+
+ This release introduced several new features, specifically:
+
+ It also includes the following fixes:
+
+ This is the first tagged release for our Gradle plugins,
+ and it represents the first major milestone for this repository.
+
+ This release introduces the new KordEx plugin,
+ designed to make it easier to set up and configure a project using it.
+ This will be the canonical way to set up a KordEx project from now on.
+
+ The plugin supports the following options, exposed via the
+ It also exposes the following functions:
+
+
+ You may add this to your project as follows, once the Gradle Plugin Portal approves it:
+
+ When switching to this plugin,
+
+ This is what I get for developing on a work night!
+
+
+ Well, this is embarrassing.
+
+
+ This is the first tagged release for our i18n tools, and it represents the first major milestone for this repository.
+
+ This is the first release for our translation class generator tool.
+ This is a self-contained API and CLI tool,
+ which generates a KordEx translations class based on a translation properties file and a few other
+ pieces of information.
+
+ To learn more about what this is and how to use it,
+ please check the README file.
+
+
+
+ translate functions, which were a tricky mess to
+ navigate at times.
+
+
+ 2.2.0-SNAPSHOT.
+ That was fast, huh?
+
+
+
+ 2.0.20. Finally, a stable release with the fixes we needed!
+ ExtensibleBotBuilder class,
+ and into their own separate class files, including their corresponding nested types.
+ Naturally, if you've written any extension functions using one of these classes as a receiver,
+ you'll need to update them.
+ I tried to make this deprecate cleanly, but unfortunately, I couldn't -
+ you can't place type aliases anywhere other than the top-level of a file!
+ about { } builder for the corresponding extension.
+ This removes the default "general" information command (and mandatory footer),
+ instead allowing you to create your own fully custom commands while providing a default,
+ configurable "copyright" subcommand.
+ For more information on this, please read the new docs.
+ I feel like it's a lot less obnoxious, personally!
+ 2.1.0-SNAPSHOT.
+ This version provides the following updates:
+
+
+
+ 2.0.20-Beta1 -> 2.0.20-RC2
+
+
+ 1.4.1 -> 1.5.10.60.0 -> 0.61.02.0.20-Beta1-1.0.22 -> 2.0.20-RC2-1.0.241.5.6 -> 1.5.75.1.2 -> 5.1.36.6.2 -> 6.6.37.12.0 -> 7.14.02.0.13 -> 2.0.162.0.20-RC2
+ (or set it to ignore the Kotlin version if this isn't possible for you).
+ 2.0.20-Beta10.15.0-SNAPSHOT.kotlinx.serialization,
+ you must update to Kotlin 2.0.20-Beta1 or later to use this release!
+ T & Any.
+ If you're working with the KordEx code directly, please rely on build output rather than IDE hints for
+ the time being.
+
+
+
+
+ AutoModerationActionExecutionEventAutoModerationEventGuildAuditLogEntryCreateEvent
+
+ guildId field on audit log entries.
+ GuildScheduledEventEventInviteCreateEventPresenceUpdateEventThreadChannelDeleteEventThreadMembersUpdateEventThreadUpdateEventFixedLengthQueue<T> container type.
+ If you need this, please read the KDoc comments!
+
+
+ 1.9.03.0.225.10.30.60.00.15.0-SNAPSHOT2.0.20-Beta1-1.0.222.3.122.0.20-Beta17.0.01.7.15.1.17.10.01.8.1-SNAPSHOT to be precise.
+
+
+
+
+
+ 0.14.0-SNAPSHOT releases.
+
+
+
+ jemoji: 1.3.3 -> 1.3.4junit: 5.10.1 -> 5.10.2kaml: 0.56.0 -> 0.57.0kotlin-logging: 6.0.2 -> 6.0.3kord: 0.13.0-SNAPSHOT -> 0.14.0-SNAPSHOTktor: 2.3.7 -> 2.3.8kotlinx-coroutines: 1.7.3 -> 1.8.0kotlinx-serialization: 1.6.2 -> 1.6.3logback: 1.4.14 -> 1.5.0sentry: 7.1.0 -> 7.3.0slf4j: 2.0.11 -> 2.0.12time4j: 5.9.3 -> 5.9.41.8.0-SNAPSHOT once it's been built, in about 10-15
+ minutes.
+ 1.7.2-SNAPSHOT,
+ which includes some breaking changes to the paginator API for those of you with custom paginators.
+ chunkedPages is set to 1 (the default),
+ the paginator will behave as it always has.
+ Set it to any value up to 9, however,
+ and that many pages will be displayed to your users at once.
+ When you do this, an extra embed will be generated at the bottom,
+ containing information about the current/total pages, switchable groups,
+ and so on — instead of placing this at the bottom of each page embed.
+ 1.7.2-SNAPSHOT is building and will be available in 10-15 minutes.
+ Math is hard, so please let me know how you get on!
+
+
+
+ Scope and Breadcrumb objects are no longer exposed.
+ Instead, a set of classes based on the new SentryCapture type have been added,
+ and these have replaced the aforementioned Sentry objects in all builders and functions.
+ defaultDataTypes builder, which you can find in the extensions -> sentry builder.
+ Use the following properties to change what can be submitted:
+ arguments, channels, guilds, roles,
+ and users.
+
+
+ arguments.
+ This is also true for Mappings Extension query strings.
+ Slash command arguments are not currently submitted.
+ dataTypeTransformer and
+ predicate builders, to further customize what can be submitted to Sentry based on an
+ individual SentryCapture subtype.
+ SentryCapture types expose more of the Sentry APIs than before,
+ allowing you to provide scope hints and severity levels, among other things.
+ data, hints, and tags maps
+ defined in the SentryCapture subtypes,
+ you can now define how the integration should filter the values within based on their keys,
+ using one of two methods:
+
+
+ channel.key) — the key will not be modified if it's submitted.
+ key::channel) — the colons and type will be removed from the key if
+ it's submitted.
+ 1.7.0-SNAPSHOT targeting Kord
+ 0.13.0-SNAPSHOT.
+ This release contains breaking deprecations, so remember to rebuild your code before pushing an update!
+ 0.12.0, the latest stable release for Kord.
+ Hot off the presses for those of you who rely on stable releases!
+
+
+
+ libs.versions.toml file.
+ ChangeSet type, used to compare voice states. We need feedback on this!
+
+
+
+ 1.6.0-SNAPSHOT.
+
+
+
+ EphemeralInteractionContext and PublicInteractionContext now both extend
+ the new InteractionContext interface,
+ which provides a common base type exposing the functionality present in both subtypes.
+ respondPublic and respondEphemeral, which were used to deliberately send
+ Discord the wrong follow-up type, have been moved to a single base function named
+ respondOpposite.
+ ArgumentParsingException now includes the relevant locale and
+ bundle properties, which can be used for further customization of error messages.
+ 1.5.11-SNAPSHOT.
+ 0.12.0-SNAPSHOT, and contains the following dependency updates:
+
+
+
+ jansi 2.4.1jsoup 1.16.2kord 0.12.0-SNAPSHOTktor 2.3.5mongodb 4.11.0sentry 6.32.01.5.10-SNAPSHOT.
+
+
+
+ 0.11.1.
+ 1.5.9-SNAPSHOT to GitHub, and it should be available on Maven in 15-20 minutes.
+ 1.5.8-SNAPSHOT has been released, to follow Kord's new snapshot policy
+ (and track Kord 0.10.0-SNAPSHOT).
+ As usual, it should be available on Sonatype Snapshots in about 15 minutes.
+ User.tagOrUsername() - which returns a username with or
+ without a discriminator, depending on whether a user has migrated to the new username system.
+ 1.5.7-SNAPSHOT (based on Kord 0.9.x-SNAPSHOT) has been published, and
+ that'll be the working version for now.
+ 0.8.0, the latest stable release for Kord.
+ It's been over a year since the previous stable Kord release,
+ so it's also been a year since the previous stable KordEx release.
+ How time flies, right?
+ develop branch is going away.
+ Please re-parent your PRs to target the root branch.
+
+
+
+
+
+
+ extra-pluralkit, has been created to make things easier for bots that wish
+ to support PluralKit, a widespread accessibility tool on Discord that's mainly used by plural
+ systems
+ 1.5.6-SNAPSHOT has been pushed,
+ which includes my first attempt at getting an abstraction together.
+ ModalForm, and pass the constructor into your
+ command and component functions — just how you would with your argument classes.
+ If you're using this with a command that already has arguments,
+ then this should go Arguments class constructor
+ reference — ephemeralSlashCommand(::MyArgs, MyModal) { ....
+ lineText and paragraphText builder
+ functions.
+ Remember to provide a label for all of your widgets!
+ action
+ blocks — which you can get at like this: action { modal -> ....
+ You can access the input data provided by the user by accessing the value property on
+ each widget.
+ ModalForm subtype instead if you prefer.
+ 1.5.5-SNAPSHOT,
+ which uses Kotlin 1.7.10
+ and is based on Kord's 0.8.x-SNAPSHOT versions again.
+ libs.versions.toml
+
+
+
+
+
+
+ 0.8.0-M9, the latest stable release for Kord.
+ We've been waiting for this one for some time — it's nice to get something new out there for you!
+
+
+
+
+
+
+ mutate { } and autoComplete { }
+ (for slash commands) options.
+ Additionally,
+ validation now uses validate { }, which uses an API that's much closer to how checks
+ work elsewhere.
+ @Converter
+ annotation.
+ It also adds check-style validate {} builders for validation
+ (eg via failIf()) and a mutate {} function allowing you to return a
+ changed final value.
+ coalesced with coalescing in the function name.
+ 0.8.0-M7.
+ The reason for this is largely due to Kord's extremely long snapshot cycle,
+ which itself was caused by many changes to Discord's APIs.
+ In turn, this means that this release contains a mind-boggling number of internal changes.
+
+
+
+ public or ephemeral type, to
+ help keep things safe.
+ Additionally, our old message commands are now named chat commands and have their functions
+ prefixed with chat.
+ ComponentContainer type which makes it easier to re-use components,
+ as well as a callback registry for advanced use-cases
+ (such as components that need to work after a restart).
+ SentryContext provided everywhere you'd expect to be able to make
+ use of Sentry,
+ instead of a plain list of breadcrumbs.
+ This, along with several other improvements, should make Sentry much more pleasant to work with.
+
+
+ deferredAck being inverted for ephemeral components
+ Kord instance is once again created a lot earlier.
+
+
+
+
+
+ command DSL function being
+ renamed to chatCommand - and they're disabled by default, in line with
+ Discord's requirements for larger bots
+ publicSlashCommand and
+ ephemeralSlashCommand
+ public* and
+ ephemeral* DSL functions
+ autoAck,
+ but you can use the initialResponse DSL to ack with response or call the
+ edit function in your action to edit the acknowledged response
+ Scheduler now have an easy restart function
+
+
+
+ develop
+ branch on GitHub and hit . on your keyboard!
+ trace logging
+ Allow for enabling the Sentry integration without adding the Sentry extension
+
+
+
+
+
+ not) will always pass in this situation,
+ and all other checks will always fail in this situation.
+ Page objects are now backed by a Kord EmbedBuilder,
+ and should be constructed using the builder syntax.
+ For example: Page(bundle) { description = "This is a page." }
+ ExtensionEvent class now extends Kord's Event type, with a shard
+ number of -1
+ guildFor() function for InteractionCreateEvent was changed to
+ manually get the guild from the interaction data, as it can otherwise be missing in some situations
+
+
+
+
+
+
+ Components builderfail functions to fail a
+ check
+
+
+
+
+
+
+
+
+
+
+
+ Command class has been renamed to
+ MessageCommand.
+ Additionally, CommandContext is now MessageCommandContext.
+ You'll find similar classes that relate to slash commands as well.
+ Arguments objects now require a description.
+
+
+
+ bot.start() function.
+ If you wish to supply an intent builder or presence builder, this function now takes a single
+ builder lambda (and is thus a DSL function) instead of taking two separate lambdas.
+ It was not possible to deprecate the old version of this function due to conflicting parameter
+ lists, so you'll have to update your bots.
+ For more information, please see the bot object documentation.
+ bot.addExtension() function.
+ The old function is still there and has been deprecated,
+ while the new function takes a builder function instead of a reflection-based class object.
+ Functionally, this just means changing bot.addExtension(ExtensionClass::class) to
+ bot.addExtension(::ExtensionClass) in most cases.
+
+
+
+
+
+
+
+
+
+ outputError property to OptionalConverter
+ (but not coalescing variants — that wouldn't make sense) and expose it in Arguments
+ extension functions.
+ true is provided (false is the default), if that's something you end
+ up needing in your command parsing logic.
+
+
+
+ commandName to CommandContext objects, allowing you to get the
+ (lowered) name the user gave for invocation
+ breadcrumb() not actually adding the breadcrumb to the MutableList
+ in both CommandContext and EventContext
+
+
+
+
+
+
+ afterEvaluate.
+
+
+
+
+
+ func-mappings) module is now back,
+ the KordEx plugin no longer throws an error when trying to use it.
+ "latest" is specified).
+
+
+ dev task, which runs your bot in development mode and can
+ recursively parse .env files in your project:
+
+
+ .env file in your project's root directory is parsed.
+ .env files it finds on the way,
+ overriding previously set variables if it finds any duplicates.
+ /root/.env -> /root/folder/.env
+ -> /root/folder/current-submodule/.env
+ processDotEnv in your bot { }
+ builder to false.
+ "latest" for the kordVersion property,
+ the plugin will now ignore Kord feature branch snapshots,
+ which should make things more consistent and predictable.
+ You can still supply feature branch snapshots manually if you need to use them.
+ plugin { } builder,
+ the plugin now disables all Tar tasks,
+ as building a .tar distribution is nonsensical given Kord Extensions can't load them.
+
+
+
+
+ addDependencies configuration option,
+ which you can use to prevent the plugin from configuring any dependencies.
+
+
+
+
+ jvmTarget option to the kordEx { } builder,
+ which overrides the JVM compilation target.
+ This would usually come from Kord Extensions,
+ but some projects may need to supply their own version when dealing with some dependencies.
+
+
+ extra-mappings module.
+ kordEx { } block,
+ or omit the bot { } and plugin { } blocks,
+ and the plugin will work as expected.
+
+
+ plugin builder,
+ present in the kordEx builder.
+
+
+ bot builder, present in the
+ kordEx builder.
+
+
+
+
+
+
+
+
+
+
+ Property objects for plugin configuration.
+
+
+ https://releases-repo.kordex.dev/
+ https://snapshots-repo.kordex.dev/
+
+
+
+
+ /
+ as if they were within the filesystem root.
+
+
+
+ mainClass configuration option,
+ which you should set to your bot's main class,
+ similarly to the application plugin or the Main-Class JAR manifest.
+ This will automatically configure both the application plugin and the
+ jar task.
+ google() Maven repository.
+
+
+ kordEx builder:
+
+
+
+ addRepositories = true - Whether to add the repos you'll need to grab KordEx
+ and its dependencies at build time.
+ ignoreIncompatibleKotlinVersion = false - Whether to warn about incompatible
+ Kotlin versions instead of error.
+ kordVersion = null - A specific Kord version to pin,
+ instead of the one KordEx was built against.
+ kordExVersion = null - A specific KordEx version to pin, instead of the latest
+ version.
+ voice = true - Whether to use a version of Kord that supports voice, which will
+ result in a larger dependency.
+
+
+
+ dataCollection(level) - Set your bot's data collection settings.
+ module(name) - Add a dependency on a KordEx module by name.
+ filter functions.
+ To create a copy with an additional post-processor (which you can use to manipulate the result of a
+ translation), use the wthPostProcessor DSL function.
+ To add multiple, you can use withPostProcessors.
+ It's also possible to remove post-processors using the filterPostProcessors function.
+
To create a copy with updated settings, use the withPresetPlaceholderPosition or
withTranslateNestedKeys functions.
+ Kord Extensions provides a number of additional utility functions. +
+ +capitalize - Creates a clone of the current Key, with an additional post-processor
+ which capitalizes the first character of the translated string.
+ It uses the Key's locale, or your bot's configured default locale if one isn't present.
+ capitalizeWords - Creates a clone of the current Key, with an additional post-processor
+ which capitalizes each word in the translated string.
+ It uses the Key's locale, or your bot's configured default locale if one isn't present.
+ lowercase - Creates a clone of the current Key, with an additional post-processor which
+ lower-cases each character in the translated string.
+ It uses the Key's locale, or your bot's configured default locale if one isn't present.
+ uppercase - Creates a clone of the current Key, with an additional post-processor which
+ upper-cases each character in the translated string.
+ It uses the Key's locale, or your bot's configured default locale if one isn't present.
+ withContext - Creates a clone of the current Key, updating its stored
+ locale to match the one corresponding with the given CommandContext.
+
When you find a property or function expecting a Key object, it's enough to configure the
From beda1f32cc50a236771b5cf00d02c2b1ecd2758c Mon Sep 17 00:00:00 2001
From: Gareth Coles
+ It's here, y'all! + This version brings a huge number of internal and external changes. +
+ +
+ I apologize in advance for the upcoming work,
+ but Kotlin's type system prevents me from implementing a deprecation process.
+ Key objects.
+
+ Before getting started, + I recommend reading the new i18n documentation page, + which will introduce you to the new translation system and explain how everything works. +
+ +
+ String.toKey(bundle) extension function temporarily.
+
+ If you're using the KordEx Gradle plugin, start by
+
i18n builder in the Gradle plugin,
+ providing values for at least the classPackage and translationBundle
+ properties.
+ generateTranslationsClass Gradle task,
+ which will generate a new Translations object containing references to the keys
+ in your translation bundle.
+ Key objects in your
+ generated Translations object.
+
+ If you can't (or don't want to) use the KordEx Gradle plugin,
+ you'll need to create the Key objects yourself.
+ This can be done in one of the following ways:
+
Key objects yourself,
+ storing them in a central location and being sure to provide them with the bundle
+ constructor parameter.
+ + Here's an overview of what's changed: +
+ +
+ All translatable strings now take Key objects instead.
+
+ All bundle properties have been removed.
+
Key
+ objects.
+ This is the default behavior when using the generator, as explained above.
+
+ All translate convenience functions have been removed.
+
with functions on Key objects to create a
+ newly configured object, and then use the corresponding translate functions
+ to translate that Key in place.
+ Key objects
+ instead of strings.
+ String-based functions have been deprecated.
+
+ This is a
+ I truly believe that this update will be a huge benefit to most of you,
+ and I hope you enjoy working with the new tools.
+
+ If you're curious about my mindset while designing this system, + I wrote a blog post about it! +
+ ++ As always, thanks for sticking with Kord Extensions, and I hope you're all having a good spooky season! +
+
+ First, add the required Maven repos to your settings.gradle.kts.
+
- First, add the KordEx Gradle plugin to your build.gradle.kts.
+ Next, add the KordEx Gradle plugin to your settings.gradle.kts
+ or build.gradle.kts.
- First, add the KordEx Gradle plugin to your build.gradle.kts.
+ First, add the required Maven repos to your settings.gradle.kts.
+
+ Next, add the KordEx Gradle plugin to your settings.gradle.kts
+ or build.gradle.kts.
https://repo.kordex.dev/snapshots/
+ https://snapshots-repo.kordex.dev
@@ -199,11 +199,11 @@ <dependencies> <!-- ... --> - <dependency> - <groupId>dev.kordex</groupId> - <artifactId>kord-extensions</artifactId> - <version>%version%</version> - </dependency> + <dependency> + <groupId>dev.kordex</groupId> + <artifactId>kord-extensions</artifactId> + <version>%version%</version> + </dependency> </dependencies>
+ All below properties are optional. +
+| Property | @@ -483,28 +487,16 @@Description | |
| - Required Properties - | -||
mainClass |
- - - |
- Your bot's main class, which will usually refer to a top-level main function.
- Providing this will automatically apply and configure the application plugin,
- and add the main class reference to your bot's JAR manifest, making the built JAR executable.
- |
-
mainClass |
+ - | |
| - Optional Properties - | -
+ Your bot's main class, which will usually refer to a top-level main function.
+ Providing this will automatically apply and configure the application plugin,
+ and add the main class reference to your bot's JAR manifest, making the built JAR executable.
+ |
+
|
processDotEnv |
From e4a482faa0ec0f59d0c44583bb2b7c1a81855da0 Mon Sep 17 00:00:00 2001
From: Gareth Coles ||
publicVisibility |
+
+
+
+ Whether to use the
+ Defaults to |
+ |
+ This version includes a small change for the KordEx plugin. +
+ +i18n builder, attempt to throw a more useful error when the source
+ translation bundle isn't using the UTF-8 encoding.
+ + Just updating some KDocs. +
+ ++ I've gone ahead and pushed a new KordEx version in line with several dependency updates, including Kord: +
+ ++ As always, if you directly depend on anything KordEx needs, remember to update your dependencies! +
++ This version includes a small internal API change in the KordEx plugin. +
+ ++ You shouldn't use internal APIs unless you need to, so I don't document them. + This version adds an opt-in annotation to explicitly tag internal APIs. +
++ Updated the class generator to remove common delimiters from names and camel-case them instead of + replacing the delimiters with underscores. +
+ +-ncc and --no-camel-case switches.
+ I'll remove these when I remove the API option.
+
+ Serialized argument, converting values to the given type using
+ kotlinx.serialization.
+
kotlinx.serialization is meant to be used.
+ This is a best-effort attempt that allows you to support new argument types without writing a
+ converter,
+ and you should thoroughly test your bot before you deploy any code using this.
+ typeName
+ (Key) —
+
+ Key object
+ representing a human-readable short name for whatever the given type
+ represents.
+ Should be no more than two or three words.
+
+
+ If you're maintaining a fork of Kord Extensions, we'd appreciate it if you could update your fork to + identify itself in our collected statistics. + To learn how to do this, please + + look at the data collector. + +
+ +
+ If the above link doesn't bring you to the correct line, search for fork-name in
+ DataCollector.kt.
+
Data collected is stored on a server located in Germany, owned by @@ -136,6 +156,11 @@
@@ -290,4 +315,4 @@
- The data collected is not sold or shared with any third-parties, and direct access is limited to - the Kord Extensions lead maintainer. + The data collected is not sold and is only shared with the Kord developers. + Direct access is limited to the Kord Extensions lead maintainer + and one of Kord's core developers. However, graphs and summaries based on that data, without bot/team information, are made available to the public.
From 3e9adf5e8df14ed9aad5a54ca50309247e813013 Mon Sep 17 00:00:00 2001 From: sciwhiz12While the legal definition for linking hasn't been tested in Europe, we understand it to mean - the copying of names and API definitions from another project yours is compiled against, without + the copying of names and API definitions from another project yours is compiled against, without actually distributing the project you're linking to.
- +
Under European law, this doesn't require rights-holder permission, and it doesn't impact how your
project must be distributed or licensed.
From 61a27d4a48aba730c3422b82f942d442652365e0 Mon Sep 17 00:00:00 2001
From: sciwhiz12
messageFormatVersion
+ Which ICU Message Format version your bundle uses.
+ Set this to 2 for
+
+ the new experimental format, if you'd like to test it.
+
+ A value of 2 will result in a compilation error on Kord Extensions versions
+ older than 2.3.1-SNAPSHOT.
+
+ Defaults to 1.
+
outputDirectoryescape is set to /escape is set to \syntax is set to docker/dockerfile:1