v4.4.0 | Long Term Support (LTS)
This release is long overdue, but with it comes the decision to place v4
into LTS status.
Support for v4
will consist only of bug fixes from this point forward as development focus turns to v5
. No additional features, documentation changes, or enhancements will be accepted for v4
. Additionally, No changes to support the new GuildIntents.MESSAGE_CONTENT will be backported into v4
. This shouldn't be a problem, as v4
handles things well, but it bares mentioning.
The LTS support timer will start once v5 reaches a level of maturity that we feel confident enough in, such that we would recommend transition to it for all developers. It will likely start once v5
hits beta and 6 months after that we will drop support for v4
.
Going forward, we will be working on getting the v5.0.0
alpha builds out.
Also, Please take a moment to look at the deprecated features as they will all be removed in v5
New Features
- Multi-embed support in
MessageAction
- StageChannel support
- Slash Command option
OptionType.NUMBER
support - Slash Command option
OptionType.CHANNEL
channel type restrictions - OptionType max/min support
- TimeFormat markdown support (#1676)
- Message#getReferencedMessage()
- GuildVoiceVideoEvent
- EmbedBuilder#copyFrom (#1738)
- SlashCommandEvent.getCommandString (#1693)
- Guild.NSFWLevel
- Message#getInteraction()
- Command#getVersion()
- MarkdownSanitizer: escape all markdown characters regardless of if they're being used as markdown regions (#1754)
- User Profiles
- Per-Guild Member Avatar
- Invite Targets: (#1628)
- RoleIcon support
- ApplicationInfo#getTermsOfService() & #getPrivacyPolicy()
Deprecation
All deprecated features in v4 will be removed in v5!
Detailed javadoc can be found in the deprecated tab of the docs
Installation
The release version is: 4.4.0_350
The latest version is:
Gradle
repositories {
mavenCentral()
maven {
name 'm2-dv8tion'
url 'https://m2.dv8tion.net/releases'
}
}
dependencies {
implementation("net.dv8tion:JDA:4.4.0_350")
}
Maven
<dependency>
<groupId>net.dv8tion</groupId>
<artifactId>JDA</artifactId>
<version>4.4.0_350</version>
</dependency>
<repository>
<id>dv8tion</id>
<name>m2-dv8tion</name>
<url>https://m2.dv8tion.net/releases</url>
</repository>
Changelog
- Support multi-embeds in MessageAction by @MinnDevelopment in #1652
- Fix checks in CommandData#addSubcommand and CommandData#addSubcommandGroup by @MrLetsplay2003 in #1674
- add a check for null embeds field in DataMessage#getEmbeds by @caneleex in #1678
- Fixed the issue with last character handling for cases when the length of the message is 4001 characters by @maxtrap in #1680
- add missing checks to Message#suppressEmbeds by @caneleex in #1660
- fix parsing stickers by @caneleex in #1692
- First pass on stage channels by @MinnDevelopment in #1575
- Add TimeFormat and Timestamp by @MinnDevelopment in #1676
- Replace isEmpty check with isBlank in StageInstanceActionImpl#setTopic by @LenderSchlender in #1698
- Change checks for emote name length to check minimum length by @LenderSchlender in #1701
- Fix ChannelAction#setTopic not doing anything by @Xirado in #1709
- Add support for new SelectionMenu components by @MinnDevelopment in #1646
- Bump embed max description length by @Andre601 in #1703
- Change SelectionMenu.Builder#Builder visibility to protected by @freya022 in #1719
- Fix outdated sticker field name by @Andre601 in #1732
- Docs update by @MinnDevelopment in #1733
- Add thread permissions by @MinnDevelopment in #1742
- Implement access and retrieval of message_reference by @arynxd in #1686
- Fixing getReferencedMessage and permissions for resolving a MessageReference by @DManstrator in #1751
- Add GuildVoiceVideoEvent by @Xirado in #1716
- Implement retrieve helpers for private reaction events by @arynxd in #1750
- Add copyFrom to EmbedBuilder by @freya022 in #1738
- Fix exception handling for parsing errors by @MinnDevelopment in #1760
- Bump selection option limits and extract max length values of SelectOption and Button by @Alf-Melmac in #1753
- Add new message types for Threads by @oliver276 in #1759
- Add JDA Version to Websocket errors by @Andre601 in #1777
- Add SlashCommandEvent.getCommandString by @VixenKasai in #1693
- Add NUMBER support by @Andre601 in #1745
- Add missing getJDA() on Interaction by @nikammerlaan in #1782
- Update TextChannelUpdateNSFWEvent.java by @Olzie-12 in #1774
- Docs Update by @DV8FromTheWorld in #1792
- Ensure permission in PermissionException is not null by @ScoreUnder in #1764
- Change choice name length check to 100 instead of 32 by @oliver276 in #1801
- Enable unmuting suppressed users by @DeveloperTK in #1783
- Fix embed length checks by @arynxd in #1749
- Add NSFWLevel by @Xirado in #1793
- Add interaction related message flags by @freya022 in #1790
- Adding external sticker permission and adding external emoji to text channel overrides by @Sheldan in #1778
- add Interaction Object for Messages by @TopiSenpai in #1747
- Add Command#getVersion by @Xirado in #1741
- Add id as fallback on Command version by @Xirado in #1808
- Create ID alternatives to permission override methods in ChannelManager by @ScoreUnder in #1762
- Add long overload to OptionData#addChoice while still keeping the int overload by @Xirado in #1825
- Added START_EMBEDDED_ACTIVITIES Permission by @DManstrator in #1827
- add ephemeral field to attachment by @TopiSenpai in #1826
- Add CHANNEL_REGION AuditLogKey by @Xirado in #1833
- Add check and recovery for missing self members by @MinnDevelopment in #1672
- Fix exception schema parsing if _errors array is top-level by @Xirado in #1813
- Add OptionData#setChannelTypes by @caneleex in #1820
- fix reaction remove emoji event name by @caneleex in #1853
- fix parsed type for "message_id" by @Menkalian in #1855
- fix parsing of the emote id in MessageReactionClearEmoteHandler by @caneleex in #1860
- Feature: Markdown escape all by @sweetsofimc in #1754
- Updating development with docs changes by @DV8FromTheWorld in #1867
- fix ignoring channel types in OptionData#fromData by @caneleex in #1864
- Implement per-guild avatars by @RedDaedalus in #1649
- Implement invite targets by @anweisen in #1628
- Fix overriding messages with embeds and components by @duncte123 in #1873
- Add getPrivacyPolicyUrl() and getTermsOfServiceUrl() to ApplicationInfo by @Yashar256 in #1882
- Added whoami as command to the MessageListenerExample which sends id,… by @Binozo in #1866
- add BOT_HTTP_INTERACTIONS user flag by @caneleex in #1865
- Updated magic numbers to use the Message#MAX_CONTENT_LENGTH constant by @Tais993 in #1870
- Implement user banner & banner color by @RedDaedalus in #1736
- add support for min/max option value by @caneleex in #1863
- Add support for role icons by @caneleex in #1823
- Merge latest Docs/development by @DV8FromTheWorld in #1901
- Fix NPE in GuildRoleUpdateHandler by @caneleex in #1903
New Contributors
- @MrLetsplay2003 made their first contribution in #1674
- @maxtrap made their first contribution in #1680
- @LenderSchlender made their first contribution in #1698
- @freya022 made their first contribution in #1719
- @oliver276 made their first contribution in #1759
- @VixenKasai made their first contribution in #1693
- @Olzie-12 made their first contribution in #1774
- @DeveloperTK made their first contribution in #1783
- @Sheldan made their first contribution in #1778
- @Menkalian made their first contribution in #1855
- @sweetsofimc made their first contribution in #1754
- @anweisen made their first contribution in #1628
- @Yashar256 made their first contribution in #1882
- @Binozo made their first contribution in #1866
Full Changelog: v4.3.0...v4.4.0