Releases: Discord4J/Discord4J
v3.3.0
A new major release of Discord4J is now available for general usage, built from months of feedback, ideas and contributions from small and large bot owners alike. We'd like to thank all collaborators, contributors, GitHub sponsors and users working with us towards this release.
Major releases allow us to reshape some architectural concepts required to either match Discord evolution as a platform, or new features we want to implement, so they come with migration steps that are detailed in our docs page for Migration Notes and API changes.
What's new in v3.3
Discord features
- Discord API v10, providing richer error messages and mandatory gateway intents
- Support for the new Channel Structure
- Better spec methods to support type hierarchies like working with #1009 Discord4J/discord-json#128
- Support for new Components to Modals and Messages
Changelog
3.3.0
- #1317 Support for Modal Label Component
- #1320 More SelectMenu in Modals and TextDisplay Modal Support
- #1322 Support File Upload and Resolved Data in Modals
- #1323 Support self BOT member edit
- #1325 Support more data for ResolvedChannel
- #1324 Support expiresAt for Invite
- #1319 Add Role Colors
- #1307 Abstract Reaction Events
- 6298baa Add more Guild.GuildFeature
- d9f8732 Deprecate Guild#delete not allowed to bots
- 50445c6 Add PartialMember.Flag.AUTOMOD_QUARANTINED_GUILD_TAG
- 19e0095 Add ActionType#AUTO_MODERATION_QUARANTINE_USER
- 244c4cf Support for invite flags
- c8fd951 Fix Incorrect Guild Member Avatar format
- #1321 Support new Pinned Messages behaviour
- #1328 Fix missing public modifier for UnfurledMediaItem.LoadingState
v3.3.0-RC3
- Support for Components V2
- Fix missing Guild Forum Channel to Legacy Store Layout (#1309)
- Fix OnboardingPromptOption fails when discord send an invalid Emoji (#1312)
- Fix AllowedMentions when starting a thread in Spec (#1315)
- Fix Store member update not update all the available fields (#1318)
v3.3.0-RC2
ReactionEmojiwas removed, please refer to the RC release to see the replacement
v3.3.0-M2
- Implement forum channels (#1126)
- Stage channels and instances (#1021)
- Allow populating EmbedCreateSpec.Builder from existing EmbedData (#1137)
- Migrate to reactor.util.retry.Retry to be compatible with future Reactor versions (#1128)
v3.3.0-M1
- A new channel hierarchy #960 is required to support threads #958
- Better spec methods to support type hierarchies like working with #1009 Discord4J/discord-json#128
- Text methods in voice channels
- Behaviour changes for the channel structure, please check the M1 release for more info
💜 Contributors
Many thanks to
@Alex1304 @Azn9 @Doc94 @dominoxp @EasternGamer @gmisiurny @Gregory-Widmer @HappyHacker123 @jasonmokk @kashike @mennafabio @quanticc @rfresh2 @skykatik @sss-ryun and everyone in the Discord Server for all the help in this release.
v3.3.0-RC3
Discord4J v3.3.0-RC3 is the 3nd release-candidate version supporting most if not all latest Discord features. It is available on Maven Central. The RC2 was expected to be the last before v3.3.0 but the current changes in discord about components and modals require make a few RC before can full release v3.3.0.
Includes all changes from v3.2.9:
- Components V2
- Minor Fixes
🐞 Bug fixes
- Fix missing Guild Forum Channel to Legacy Store Layout (#1309)
- Fix OnboardingPromptOption fails when discord send an invalid Emoji (#1312)
- Fix AllowedMentions when starting a thread in Spec (#1315)
- Fix Store member update not update all the available fields (#1318)
If you've been using 3.2.x branch, feel free to try it as migration should be quite simple.
But if you hit any problem or discover something that could be added here, please create a GitHub issue, discussion or join our support server and let us know:
💜 Contributors
Thanks to all contributors and collaborators involved in this release.
@Azn9 @Doc94 @dominoxp @Gregory-Widmer
v3.2.9
Discord4J v3.2.9
Discord4J v3.2.9 is now available on Maven Central with bugfixes, new features and improvements. This is a recommended upgrade to all v3.2 users.
Commits: 3.2.8...3.2.9
Important
This release only contains fixs and minor improvements for 3.2.x, please refert to 3.3.x versions instead for new features.
⭐️ New features
- Add support for make Create/Edit Message Spec include the CV2 flag if can (#1305)
🐞 Bug fixes
- Fix bad bounded type parameters in Container and Section (#1303)
- Fix in Webhook edit not working with Components V2 (#1304)
- Fix RestChannel#createMessage using a deprecated builder method and failing
⚠️ Deprecations
TextInput#labeldeprecated by discord (#1316)
💜 Contributors
Thanks to all contributors and collaborators involved in this release.
@Azn9 @Doc94
v3.3.0-RC2
Discord4J v3.3.0-M2 is the 2nd release-candidate version supporting most if not all latest Discord features. It is available on Maven Central. We also expect this to be the last one before v3.3.0.
Includes all changes from v3.2.8:
- Components V2
- Application Emoji
- Application Subscriptions
- SoundboardSound
- Monetization and SKU
- Onboarding
⚠️ Update considerations
ReactionEmojiwas removed- Emoji was created in replace of the
ReactionEmoji - All the static methods from
ReactionEmojiwas ported inEmoji - All inner classes in
ReactionEmojilikeReactionEmoji.Unicodeare a separate classCustomEmojifor all custom emoji and the base forApplicationEmojiandGuildEmojiUnicodeEmojifor all the unicode emoji- All this classes has a
ofmethod for get an intance of that based in the static methods provided inEmoji
- Emoji was created in replace of the
If you've been using 3.2.x branch, feel free to try it as migration should be quite simple.
But if you hit any problem or discover something that could be added here, please create a GitHub issue, discussion or join our support server and let us know:
v3.2.8
Discord4J v3.2.8
Discord4J v3.2.8 is now available on Maven Central with bugfixes, new features and improvements. This is a recommended upgrade to all v3.2 users.
Commits: 3.2.7...3.2.8
Important
This release is intended to be the last one with features for 3.2.x, please refert to 3.3.x versions instead.
⚠️ Update considerations
- Access to the conent of message without
MESSAGE_CONTENTintent- This change aligns with Discord's current requirements regarding message content access and aims to avoid confusion caused by an empty content return.
- For avoid an
UnsupportedOperationExceptionplease make sure you have theMESSAGE_CONTENTintent
ApplicationInfo#getOwnerIdnow returns an OptionalResolvedChannel#getNameandResolvedChannel#getEffectivePermissionsare now OptionalRestGuild#modifyChannelPositionsnow return Void and not RoleDataGuildService#modifyGuildChannelPositionsnow return Void and not RoleData
⭐️ New features
- Add SuperReactions (Burst) (#1161)
Reactionnow include methods to identify burst reactions- Added
ReactionCountDetailsfor the count details in reactions - Add burst/type fields for MessageReaction events (#1214)
- Add TeamMemberRole for Teams (#1167)
- Improvements Guild Features from raw String to EnumSet (#1207)
- Add support for user-installed applications (#1183)
- Add support for Avatar Decoration for User and Member (#1234)
- Add support for Bulk Ban to Guild (#1212)
- Add support for Components V2 (#1294)
- Add support for Polls (#1222)
- Add support for add poll in InteractionReplyEditSpec (#1284)
- Add support for the Guild Resource Navigation (#1197)
- Add support for default values in SelectMenus (#1163)
- Add OptionKey for AutoMod and Integrations (#1166)
- Add support for Edit Current Application (#1164)
- Add OptionKey for Application Id (#1208)
- Add ActionType for Threads/Application/Monetization AuditLog Events (#1209)
- Add ActionType for Onboarding and Guide (#1213)
- Add
getUsermethod to Interaction events (#1217) - Add news
Message.Typefor INCIDENT/PURCHASE (#1224)- Add
isDeletablemethod toMessage.Typefor allow users know if that type can be deleted
- Add
- Add
isEditabletoPartialMember.Flagfor allow user know if that flag can be added/removed (#1276) - Add Member Profile Actions for AutoMod (#1221)
- Add shortcut methods for
ChatInputInteractionEventto get option values (#1226) - Add new Permissions
- Add missing fields in ApplicationInfo (#1236)
- Add support for "thread_name" and "thread_id" in webhook execution and message actions (#1232)
- Add support for the enforce_nonce parameter on message creation (#1235)
- Add support for monetization endpoints, SKU and entitlements (#1184)
- Add method for get Avatar in ResolvedMember (#1251)
- Add Onboarding Support (#1231)
- Add support for the new premium button style (#1240)
- Add support for reason in Role/Channel change position (#1247)
- Add support for Application Role Connection Metadata (#1238)
- Add support for Application Emoji (#1252)
- Add support for get Voice State using REST endpoints (#1257)
- Add support for get StickerPack by ID (#1259)
- Add support for get role from Guild using REST (#1265)
- Add support for Guild Member Banner (#1290)
- Add PartialMember.Flag for id 4,5,6,7,9 (#1286)
- Add support for Recurrence Rule in ScheduledEvent (#1266)
- Add support for linked role mention (#1285)
- Add support for stickers and flags in Message/Webhook create request (#1272)
- Add support for Message Forward (#1283)
- Add support for Subscriptions (#1288)
- Add support for SoundboardSound (#1289)
- Update retrieve limits for guilds and guild members (#1275)
🐞 Bug fixes
- Fix unsigned long printing in requests (#1129)
- Fix code example for Modals (#1170)
- Fix scope of dependency
com.discord4j:stores-api(#1201) - Fix inconsistence in Role/Channel position modification request (#1237)
- Fix ReactionEmoji.Custom name can be null (#1244)
- Fix ConcurrentModification for
WrappedGuildData#unwrapin store (#1271) - Fix nullable messageAuthorId for Reaction Add Event (#1274)
- Fix NullPointerException in
Entitlement#getEndsAt(b16d69a)
⚠️ Deprecations
Guild#getFeaturesin favor ofGuild#getGuildFeatures(#1207)Routes#NITRO_STICKER_PACKS_GETin favor ofRoutes#STICKER_PACKS_GET(#1219)ApplicationInfo#requireCodeGrantin favor ofApplicationInfo#botRequiresCodeGrant(#1236)ApplicationInfo#isPublicin favor ofApplicationInfo#isBotPublic(#1236)IntegrationApplication#getSummaryin favor ofIntegrationApplication#getDescription(#1277)
🔨 Dependency upgrades
- Update discord-json to 1.6.25
- Update jackson-databind to 2.17.0 (#1205)
- Update jackson-datatype to 2.17.0 (#1205)
- Update caffeine to 2.9.3 (#1205)
- Update lavaplayer to 1.4.3 (#1205)
- Update logback to 1.3.14 (#1205)
- Update Reactor to 2023.0.8 (#1180 and #1246)
- Update D4J Stores to 3.2.3 (#1253)
- Update Gradle plugin versions to 0.42.0 (#1205)
- Update Gradle plugin git-properties to 2.4.1 (#1205)
- Update Gradle plugin release to 3.1.0
- Support GitHub Actions to check more LTS Java Versions (#1204)
💜 Contributors
Thanks to all contributors and collaborators involved in this release.
@Alex1304 @Azn9 @Doc94 @dominoxp @EasternGamer @gmisiurny @Gregory-Widmer @HappyHacker123 @jasonmokk @mennafabio @rfresh2 @sss-ryun
3.2.7
Discord4J v3.2.7
Commits: 3.2.6...3.2.7
Important
This release only includes a change related to voice encryption, as Discord's requirements will change on November 18th.
You NEED to update to this release if you're currently using 3.2.6 and use the voice connection, or else it will stop working!
If you don't need voice, or are using either 3.2.7-SNAPSHOT or 3.3.0-SNAPSHOT, then you only need to refresh your dependencies, the snapshot versions already contain this change.
⭐️ New features
v3.2.6
Discord4J v3.2.6
Closed issues: Milestone
Commits: 3.2.5...3.2.6
⭐️ New features
- Add support for setting custom activities 7613e3a
ClientActivity#customto set a bot custom statusClientActivity#withStateto include extra information to other activity typesActivity#getNamewill return the custom status if present
- Add getDurationSeconds, getWaveform and getFlags to Attachment #1156
- Add ReactionAddEvent#getMessageAuthorId method #1157
- Implement Flags in Role #1160
🐞 Bug fixes
- Fix voice moves causing invalid session if done in quick succession 884a981
- Fix unmapped integration create/update/delete events #1158
- Fix member getDisplayName returning incorrect value 1a8e6ae
- Fix #1155 and support missing Scheduled event features fa81c5b
- Fix LocalStoreLayout using wrong type on message nonce field b8b955f
💜 Contributors
Thanks to our contributors and collaborators involved in this release: @Azn9 @Doc94
v3.3.0-M2
Discord4J v3.3.0-M2 is the 2nd pre-release version supporting most if not all latest Discord features. It is available on Maven Central. We also expect this to be the last one before v3.3.0.
Milestone: 3.3.0-M2
Includes all changes from v3.2.5:
- OAuth2 module
- New username system
- Scheduled events
- Combined or partial store backends
- and more bug fixes and improvements
🚀⭐️ New features in this branch
- Implement forum channels (#1126)
- Stage channels and instances (#1021)
- Allow populating
EmbedCreateSpec.Builderfrom existingEmbedData(#1137)
⚠️ API or behavior changes
- Migrate to reactor.util.retry.Retry to be compatible with future Reactor versions (#1128)
- If you used
ResponseFunction.retryWhen(retryFactory), switch toResponseFunction.retryWhen(Retry.withThrowable(retryFactory))
- If you used
If you've been using 3.2.x branch, feel free to try it as migration should be quite simple.
But if you hit any problem or discover something that could be added here, please create a GitHub issue, discussion or join our support server and let us know:
v3.2.5
Discord4J v3.2.5 is now available on Maven Central. Includes many bugfixes, improvements, new API and Discord features supported as well as one behavior change.
Stable branch: 3.2.x
Closed issues: Milestone
Full Changelog: 3.2.4...3.2.5
⚠️ Behavior change
- Exclude message content intent from
IntentSet.nonPrivileged()- Relevant for verified bots only, if your bot is unverified and under 100 guilds this change doesn't affect you
- Since this is our default setting, if you didn't previously set intents, make sure to switch to the following set and keep previous behavior:
GatewayDiscordClient client = DiscordClient.create(System.getenv("token"))
.gateway()
.setEnabledIntents(IntentSet.nonPrivileged().or(IntentSet.of(MESSAGE_CONTENT)))
.login()
.block();⭐️ New features
- Add support for the new username system (#1147)
- Add OAuth2 module (#1083)
- Allowing you to support new command permissions system
- Fetching user connections
- Advanced bot authorization and webhooks
- Use it by adding
discord4j-oauth2to your dependencies and check out our examples
- Implement guild scheduled events (#1134)
- New event payloads,
ScheduledEvent
- New event payloads,
- Support partial or multiple store backends (#1152)
- Filling the role of our legacy
MappingStoreServiceto the new API SelectiveStoreLayoutandStoreFlagabstractions- Can disable parts of the caching system or combine backends
- Filling the role of our legacy
- Add
GuildCommandRegistrarandGlobalCommandRegistrar(Example) - Add
ActionRow#withAddedComponentandwithRemovedComponent - Support
deleteMessageSecondsinBanQuerySpec(#1146) - Implement fields for raid mention and safety alerts (#1148)
- Add
rateLimitPerUserto all supported channels - Implement Application Flags (#1131)
⚠️ Deprecations
BanQuerySpec#deleteMessageDays: check #1146RestGuild#modifyOwnNickname: switch tomodifyCurrentMemberMessage#suppressEmbeds: to be removed (#1138)Permission.MANAGE_EMOJIS_AND_STICKERS: forMANAGE_GUILD_EXPRESSIONS(#1141)
🚀 Enhancements
- Update available permissions (#1141) (#1151)
- Update message flags and types (#1142)
- Update system channel flags
- Ignore event type GUILD_JOIN_REQUEST_UPDATE and stop spamming log.warn on future unsupported events
🐞 Bug fixes
- Propagate request cancellation to HttpClient (#1153)
- Fix potential leaks due to unprocessed responses after a cancellation
- Return proper values in
AutoModActionExecutedEventaccessors (#1145) - Throw proper exception from AuditLogEntry.getResponsibleUser if it originated from a gateway event (#1136)
- Fix wrong variable name in GetAutoModRuleByIdAction (#1127)
🔨 Dependency upgrades
- discord-json 1.6.17
- Reactor 2020.0.33
- Gradle Wrapper to 7.6.1 (#1132)
- Improve github workflow (#1102)
💜 Contributors
Thanks to all contributors and collaborators involved in this release!
@indyteo @Doc94 @kashike @Gregory-Widmer @j0rdanit0 @Azn9
v3.3.0-M1
Discord4J v3.3.0-M1 is a pre-release version that aims to support the latest Discord features. It is available on Maven Central and if you've been using 3.3 snapshots until now, it means a point of stability within the branch, before all remaining features are added.
Milestone: 3.3.0-M1
Includes forward-merged changes from: v3.2.1 v3.2.2 v3.2.3 v3.2.4
As well as changes between b058afe...62b2abf (14 commits)
Branch diff up to this point (3.2.x vs 3.3.x): 1cbcf41...62b2abf (107 commits)
🚀⭐️ Notable features
- A new channel hierarchy #960 is required to support threads #958
- Better spec methods to support type hierarchies like working with PermissionOverwrites Discord4J/discord-json#128
- Text methods in voice channels
⚠️ API or behavior changes
- If you used some methods in
GuildMessageChannellikegetCategoryId, you might need to migrate types- Some methods are now in
CategorizableChanneland others inGuildChannel, check #960 for details
- Some methods are now in
- After #1021 if you use custom Stores, you need to implement these when migrating to 3.3.0
- Added to
GatewayDataUpdater: onStageInstanceCreate, onStageInstanceUpdate, onStageInstanceDelete - Added to
DataAccessor: getStageInstanceByChannelId
- Added to
- Replace TextChannel with MessageChannel in MessageBulkDeleteEvent #1089
If you've been using 3.2.x branch, feel free to try it as migration should be quite simple.
and if you hit any problem or discover something that could be added here, please create a GitHub issue, discussion or join our support server and let us know: