Releases: Kord-Extensions/kord-extensions
Release v1.6.0
KordEx 1.6.0
This release targets Kord 0.12.0
, the latest stable release for Kord. Hot off the presses for those of you who rely on stable releases!
Highlights from this release:
- Transitioned to a new Discord server. You can also now support development via Ko-fi!
- Began work on a new documentation site with Writerside. You can find the source in its own repository.
- We now use Kotlin 1.9.20 and Java 17, and you should too.
- We've updated a bunch of dependencies. Read more in the libs.versions.toml file.
- Created an experimental
ChangeSet
type, used to compare voice states. We need feedback on this! - Introduced extra first-party data adapters, such as the MongoDB data adapter.
- An in-development custom plugin system to better meet KordEx's needs.
- A generic interaction context type to support more generalised code.
- A paginator mutation system, allowing for changes to pages, paginators and paginator components.
- New checks that match the bot application's owner and team roles.
- New supported locale: Korean by Penta0308.
- Many small fixes, quality-of-life features and updates that aren't large enough to detail here.
Community Contributions:
- #200 by DeDiamondPro - More select menu types.
- #201 by NoCommend and sschr15 - Convert mappings extension configuration to storage units.
- #211 by Lukellmann - Fix breaking changes from Kord Kotlin/JS support.
- #212 by Lukellmann - Fix compilation error caused by source-incompatible Kord change.
- #222 by ADudeCalledLeo - Allow slash command groups and subcommands at the same level.
- #243 by sschr15 - Update Linkie and add 3 new namespaces.
As always, if you run into any problems, please let us know!
Commits (1)
- ab3097: Release v1.6.0
Release v1.5.6
KordEx 1.5.6
This release targets Kord 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?
Please note that as of this release, the develop
branch is going away. Please reparent your PRs to target the root
branch.
A note about Maven repos:
Please be aware that as of this release, KordEx is now being deployed to these Maven servers:
- Releases: Maven Central
- Snapshots: Sonatype Snapshots (
https://s01.oss.sonatype.org/content/repositories/snapshots
)
KordEx releases will no longer be published to the Kotlin Discord maven repo.
Highlights of this release:
- We now use Kotlin 1.8.0, and you should too
- Support for Modal forms has been added, which function similarly to argument classes, and can be provided to your commands and components in the same way - see here for an example
- KordEx is now capable of intercepting unknown Kord events and submitting its own events in their place - initially, this just includes the experimental member screening events available on a handful of servers, but PRs will be accepted for other event types that Kord doesn't plan on supporting
- A data adapter and storage unit system has been added, allowing extensions to more easily store data, with the ability for individual bots to define how that data should be stored - note, however, that this is an early version of that system, and it will likely be changed significantly later
- A module,
extra-pluralkit
, has been created to make things easier for bots that wish to support PluralKit, a very common accessibility tool on Discord that's mainly used by plural systems - Additional checks have been added that allow you to test for NSFW channels and guild NSFW levels, among other things
- A cache map object with an extra typed API has been added, allowing you to cache data between checks and make use of it in the body of your commands, as well as cache data between task runs and provide extra event context for Kord events
- Commands were given their own translation bundles, which fall back to their extension's if missing
- Slash commands may be fully localized
- Many misc utils have been added, and fixes and additions have been made for existing utils
- Individual converts have been updated with new features and fixes
- The test bot has been moved to its own module, which makes it easier to look over and modify
As always, if you run into any problems, please let us know!
Commits (166)
- c22d04: that's not how properties work
- ac235b: Forgot to set that for the tag
- d81990: Don't publish in parallel
- 717433: Let's try this again
- 983f3e: Bump up to 1.5.6
- 739668: Merge branch 'develop' into root
- 4db91f: Need to test the new build process
- 9e3f3c: Update in line with latest Kord
- f343ef: Apparently forums exist? Try it.
- ed0a1e: PK message events weren't ChannelEvents
...and 156 more.
Release v1.5.2-RC1
KordEx 1.5.2-RC1
This release targets Kord 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!
A note about Maven repos:
Please be aware that as of this release, the following Maven repos are no longer being mirrored by the Kotlin Discord Maven server:
- Bintray: Exposed, KenjiOhtsuka Kord, KTor
- Maven Central
- Sonatype Snapshots
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.
Highlights of this release:
- KordEx is now licensed under the Mozilla Public License. It previously used The MIT License, but I felt that this was a little too weak.
- Rewritten converter function syntax, which now uses a DSL instead of a function call. This makes things overall much cleaner, and allows us to add additional features to the argument system easily. Speaking of which...
- Command arguments now support
mutate { }
andautoComplete { }
(for slash commands) options. Additionally, validation now usesvalidate { }
, which uses an API that's much closer to how checks work elsewhere. - Improvements to application command registration, including not trying to remove commands that were already removed via a batch update.
- Easier disabling of components, optional locking for guild member requests, Sentry support for scheduled tasks, and the removal of the requirement for paginator page groups to have the same number of pages.
- Extra utilities, such as better names for timeout-related fields, an async start function that launches, convenience single-action functions for modifying Members quickly, easy functions for supplying maps to autocomplete interactions, and more!
- An early version of a dynamic plugin loading system. Because you can't get at classes from loaded plugins, this currently is limited in usefulness, but we'll be expanding upon it later on.
- A myriad of bug fixes and new translations.
- Mappings Extension: Support for Quilt Mappings, Hashed Mojmap and slash command autocomplete for MC versions.
- Phishing Extension: Better filtering, redirect support and usage of the Sinking Yachts websocket for instant domain list updates.
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!
Commits (80)
- f0334b: Merge branch 'develop' into root
- b69b09: Prepare for 1.5.2-RC1
- 112250: Translations update from Hosted Weblate (#119)
- 9c3c0a: [#132] Convenience function to get a thread's parent message
- c66b04: [#130, #132] Add convenience functions for editing members
- 74cf86: [#104] Eradicate excess string builders
- e5f8d8: Mappings: Mention JitPack in README
- c031f6: Phishing: Websocket!
- 13d884: i18n: Resource bundle tries to double parts on locales that only have one
- 39202a: Fix Kord-related compilation error
...and 70 more.
Release v1.5.1-RC1
KordEx 1.5.1-RC1
This release is our first "stable" release in quite a long time, targeting Kord 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.
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:
- With a lot of help from ByteAlex, we've been able to eliminate many, many unnecessary cache hits, making use of behaviors rather than entities wherever possible. This makes KordEx far more suitable for large bots with different caching requirements.
- Full support for message and user commands have been added, which come with a full rewrite of the application commands system. Application commands now always require a
public
orephemeral
type, to help keep things safe. Additionally, our old message commands are now named chat commands, and have their functions prefixed withchat
. - The components system has been fully rewritten, including a similar typing requirement to application commands. It comes with a
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). - The Sentry integration has been rewritten, and you'll find a
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. - Our translations platform has been switched to Weblate. If you're a translator (or would like to help with translations), please head over there!
- Lots of deprecated things have now been removed. If you were still using them, well, you were warned!
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!
Commits (136)
- c4a5a8: Merge branch 'develop' into root
- 8cf7b5: KordEx 1.5.1-RC1
- ff578b: Add converter for discord-formatted timestamps (#102)
- 099874: Update to Kord M7
- d064fa: Switch to Kord snapshot: 0.8.x
- a65013: Phishing: API v2
- 8f4e87: Register listeners later
- d18cb5: Bot setup should be before extension load
- e93e95: 1.5.1-SNAPSHOT: Kord M6, with a silly hack. Also, #101.
- 586020: Phishing module
...and 126 more.
Release v1.4.4-RC4
KordEx 1.4.4-RC4
Changes since 1.4.4-RC3:
- Fix error when you have paginator pages with empty footer text
- Add suspending paginator DSL functions in both types of command context
- Set up VSC Web for medium-complexity PRs - just head to the
develop
branch on GitHub and hit.
on your keyboard! - Make translation debug logging less verbose by moving it to
trace
logging - Allow for enabling the Sentry integration without adding the Sentry extension
- Allow for customising the KordBuilder during setup
- Mappings module: Fix a bad Linkie dependency
The following issues were solved in this release:
- #69 (Nice!): Allow selecting a custom HTTP engine for Kord (niche request!)
- #70: Less verbose translation logging
- #71: Allow disabling feedback command when using sentry extension
Commits (11)
- c1d39a: Prep for release
- eddd1a: [#69] Add kord DSL function to EBB. Nice.
- 149b04: Fix bad Linkie dep
- 92a1c9: [#71] Allow enabling Sentry feedback extension separately
- 501d13: Merge remote-tracking branch 'origin/develop' into develop
- 69991f: [#70] Make ResourceBundleTranslations less noisy
- 374185: Ad recommended extensions for web editor
- 9b10b9: Add: .devcontainer.json for web editor
- d0a917: Suspending paginator DSLs
- 6e5999: Consistency changes, fix for paginator footer with empty text
...and 1 more.
Release v1.4.4-RC3
KordEx 1.4.4-RC3
Changes since 1.4.4-RC2:
- Update to Kord 0.8.0-M4
- Checks are now consistent in behaviour regarding events that they don't support - negating checks (containing the word
not
) will always pass in this situation, and all other checks will always fail in this situation. - Paginator
Page
objects are now backed by a KordEmbedBuilder
, and should be constructed using the builder syntax. For example:Page(bundle) { description = "This is a page." }
- The
ExtensionEvent
class now extends Kord'sEvent
type, with a shard number of-1
- The
guildFor()
function forInteractionCreateEvent
s was changed to manually get the guild from the interaction data, as it can otherwise be missing in some situations
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:
- #65: Make ActionableComponentBuilder's ID customizable
- #66: Add the addition emoji helpers from ButtonBuilder to SelectOptionBuilder
- #67: Paginators, pages do no support embed fields
Commits (9)
- dd2f8d: 1.4.4-RC3
- 8941c4: Prepare for 1.4.4-RC3
- 925d82: [#67] Pages are now EmbedBuilder-backed and use builder syntax
- 9ce004: ExtensionEvent now extends Kord's Event type
- 2c0f52: Consistency changes, additional IJ files (see full description)
- 66fe34: InteractionCreateEvent: Manually get guild from interaction data
- 2a8576: [#65] Mutable id prop in ActionableComponentBuilder
- bed1fb: [#66] Add emoji util functions for SelectOptionBuilder
- 963311: Back to snapshots
Release v1.4.4-RC2
Release v1.4.4-RC1
KordEx 1.4.4-RC1
Note: This release contains breaking changes for the checks system. All custom checks must be rewritten! If you
need help figuring this out, please let us know on Discord.
Changes since 1.4.2:
- Update to KordEx 0.8.0-M1
- Default to rest-aware caching and allow configuration of caching strategy
- Add kotlinx.datetime converters and utils
- Add support for select menus in the
Components
builder - Add support for Discord's slash command perms, including enforcing them at the framework level
- Add support for threads, including extra checks that only operate on threads or flatten them to top channels
- Trim slash command arguments to workaround inconsistent data from Discord
- Redo the checks system, requiring calls to one of the
fail
functions to fail a check- This is breaking, checks must be redone
- Checks may now also return a failure message for commands
This release includes commits that address the following issues:
The following PRs were merged:
- #61 - Use epochSeconds for toDiscord timestamp extension function
- #64 - insert semicolon in Lclass;method for mixin target
Commits (30)
- 8aaf25: 1.4.4-RC1
- dee758: Prepare for the 1.4.4-RC1 release
- 5a6293: Slash commands: Trim argument content
- 77bbba: Update to latest KordEx snapshot
- dd428e: Mappings: Quick hotfix for unmapped names
- 1621f2: Add top channel checks
- de5fcf: Update to latest Kord snapshot
- 77a227: Expose sharding builder, allow for skipping of slash command registration
- 615ad3: Add a check util to get the thread channel
- a23c6b: 1.4.4-SNAPSHOT: Track Kord 0.8.x for threads
...and 20 more.
KordEx 1.4.1
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:
- Support for slash commands
- A completely rewritten argument parser
- Support for button components, and new paginators that use them
- Decoupling of KordEx classes using Koin
- An annotation processor for generating converter functions
- Full support for i18n, including translations
... 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 like 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!
KordEx 1.4.0-RC7
Changes since KordEx 1.4.0-RC6:
- Slash command support! As we now have two types of command, the old
Command
class has been renamed toMessageCommand
. Additionally,CommandContext
is nowMessageCommandContext
. You'll find similar classes that relate to slash commands as well. - All arguments specified in
Arguments
objects now require a description. - Command arguments classes (and just classes in general really) are now nicer to pass around, as they're treated like builders and received in more logical places.
- The help extension and sentry functionality have both been updated to support command argument descriptions and slash commands for feedback.
- The paginator has been completely rewritten (and documented), with support for switchable page sets!
- Far, far, far too many other changes to simply list here.
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.
Note: This release targets Kord's latest snapshots as of the time of this release. As they are not formal releases, there's no way to link to release notes. This release mostly exists to provide an anchor point for users that wish to stick to stable versions, while still existing within the middle of Kord's extensive snapshot cycle. Hopefully, Discord starts making their API more stable soon!