Update dependency com.github.DV8FromTheWorld:JDA to v5.0.0-alpha.3 #4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v5.0.0-alpha.3
->5.0.0-alpha.3
Release Notes
DV8FromTheWorld/JDA
v5.0.0-alpha.3
Changelog
New Features
Changes
Removed
Full Changelog: discord-jda/JDA@v5.0.0-alpha.2...v5.0.0-alpha.3
Installation
Gradle
Maven
v5.0.0-alpha.2
Changelog
New Contributors
New Features
Changes
Removed
Full Changelog: discord-jda/JDA@v5.0.0-alpha.1...v5.0.0-alpha.2
Installation
Gradle
Maven
v5.0.0-alpha.1
Welcome to the v5 alpha
While we are working through the alpha stage it is expected that things will not be completely hardened yet. Functionality may contain bugs. Docs
will bemay be missing for new features. Code is still subject to breaking changes. This is the edge of the edge, but this is where the new fun features are to play with. What life without a little danger? 😎As such, we encourage you to jump in, update your bots, and play with the new feature, but also recognize that v5 is still very much a work-in-progress. We'll do our best to provide a bug free space, but there are additional breaking changes planned for v5, so keep an eye out! 🛠️
Branch Changes
In v4 we had 3 branches:
development
- In-progress work for v4 releases went here. All PRs were pointed at this.docs/development
- Documentation only changes went here. This would get merged into development to keep development history cleanerrelease
- When a new release was made a merge commit was made from development to release. release always showed the code at the time of release for the latest release.In v5 we are simplifying this:
development
- This branch is being removed.docs/development
- This branch is being removedrelease
- This branch is being removedmaster
- This will be the primary and only branch. It will serve the same purpose that development did in v4, but with a more consistent naming expected by the community. All changes (PRs), regardless of their content, are to be made against this branch.Additionally, just like with all major-revisions of JDA, the legacy code will be maintained.
As such, the contents of
development
are currently available onlegacy/v4
and will be available there even afterdevelopment
is deleted. Any critical bug fixes that we backport tov4
will be made tolegacy/v4
.Version Schema changes:
Starting with v5, we are changing how we handle versions.
The new version schema:
<major>.<minor>.<revision>[-<classification>.<classificationRevision>]
Examples:
5.0.0-alpha.1
5.0.0-beta.14
5.1.2
Historically, we versioned JDA as
<major>.<minor>.<revision>_<buildVersion>
wherebuildVersion
was a continuously incremented number. This led us to have situations where we didn't make an actual release for a long time because developers could just update to the latest<buildVersion>
, effectively rendering the normal versioning meaningless. As such, in v5 we have decided to create releases much more often and in doing so we are dropping the<buildVersion>
identifier. As a note, these builds where the only part of the version that changed was thebuildVersion
were JDA's snapshot builds.Going forward, we are no longer going to be publishing our snapshot builds. This means that not every commit will lead to a repository-published version. The only version that will be published are releases. Releases are when the actual version of JDA has been changed. Anything that is not a release is a snapshot.
Snapshot builds will still be available in 2 ways:
Additionally, the snapshot builds have a slight variant on the new versioning scheme in terms of build assets. For snapshot builds the assets are versioned as
<major>.<minor>.<revision>[-<classification>.<classificationRevision>]_<git-commit-7-char-hash>
Examples:
5.0.0-alpha.1_d3fac3k
5.0.0-beta.14_67ylgde
5.1.2_fl1opac
Changelog
New Contributors
New Features
ThreadChannel
construct.StageChannel
is now its own type, not an extension ofVoiceChannel
NewsChannel
is now a full-fledge type, not just a subset ofTextChannel
viaisNews()
AudioChannel
now exist as an interface that contains the shared parts ofVoiceChannel
andStageChannel
. The various parts of the audio system that dealt with channels now deal withAudioChannel
instead of explicitlyVoiceChannel
IInviteContainer
IPositionableChannel
IPermissionContainer
ICategorizableChannel
GuildChannel#getPermissionContainer
to easily get access to an instance ofIPermissionContainer
for the current channel. In the majority of cases this method will simply return the same channel but cast toIPermissionContainer
, but it can return other channels instead, like withThreadChannel
asThreadChannel
doesn't supportIPermissionContainer
and relies on its parent channel to determine permissions.GuildChannel
instance you have implementsIPermissionContainer
you can just cast to it. No big deal. This getter is just here for simplicity without casting.We've simplified detecting and handling events for channels by replacing the type-specific events (like TextChannelCreateEvent) with unified events that fire for every channel. You can differentiate between the specific channel types as needed via
event.getChannelType()
ChannelCreateEvent
ChannelUpdateXEvent
(e.g:ChannelUpdateNameEvent
)ChannelDeleteEvent
Changed
ActivityType.DEFAULT
renamed toActivityType.PLAYING
MESSAGE_READ
-> Removed. UseVIEW_CHANNEL
instead.MESSAGE_WRITE
->MESSAGE_SEND
USE_SLASH_COMMANDS
->USE_APPLICATION_COMMANDS
MANAGE_EMOTES
->MANAGE_EMOTES_AND_STICKERS
USE_PUBLIC_THREADS
->CREATE_PUBLIC_THREADS
USE_PRIVATE_THREADS
->CREATE_PRIVATE_THREADS
OptionData#addChoice(String, int)
->OptionData#addChoice(String, long)
MessageBulkDeleteEvent#getChannel
now returnsGuildMessageChannel
instead ofTextChannel
WebhookClient#getChannel
andWebhookManager#getChannel
now both returnBaseGuildMessageChannel
instead ofTextChannel
Removed
ChannelManager#getType()
. UseChannelManager#getChannel()#getType()
ChannelManager#setNews
. UseTextChannelManager#setType
orNewsChannelManager#setType
ChannelAction#setNews
. UseGuild#createNewsChannel
NewsChannel
related methods removed fromTextChannel
asNewsChannel
is a full-fledged entity nowTextChannel#follow
->NewsChannel#follow
TextChannel#crosspostMessage
->NewsChannel#crosspostMessage
<Type>
specific channel events. Use the new Unified Channel events mentioned above.This includes:
<Type>ChannelCreateEvent
(ex:TextChannelCreateEvent
)<Type>ChannelUpdate<Field>Event
(ex:TextChannelUpdateNameEvent
)<Type>ChannelDeleteEvent
(ex:TextChannelDeleteEvent
)<Context>Message<X>Events
(ex: GuildMessageReceivedEvent
)This includes:
Generic<Context>MessageEvent
(ex:GenericGuildMessageEvent
)<Context>MessageReceivedEvent
(ex:GuildMessageReceivedEvent
)<Context>MessageUpdateEvent
(ex:GuildMessageUpdateEvent
)<Context>MessageDeleteEvent
(ex:GuildMessageDeleteEvent
)<Context>MessageEmbedEvent
(ex:GuildMessageEmbedEvent
)<Context>MessageReaction<X>Event
(ex:GuildMessageReactionAddEvent
)Full Changelog: discord-jda/JDA@v4.4.0...v5.0.0-alpha.1
Installation
With v5 we are finally moving back to Maven Central for our releases.
m2.dv8tion.net
will continue to host our v4 artifacts until the v4 LTS concludes, but going forward we will be publishing releases to Maven Central. For snapshot builds, please use jitpack.Gradle
Maven
v4.4.0
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 tov5
. No additional features, documentation changes, or enhancements will be accepted forv4
. Additionally, No changes to support the new GuildIntents.MESSAGE_CONTENT will be backported intov4
. This shouldn't be a problem, asv4
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 forv4
.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
MessageAction
OptionType.NUMBER
supportOptionType.CHANNEL
channel type restrictionsDeprecation
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:![latest version](https://camo.githubusercontent.com/490cb3c9f57e8729a9d676df8704c155aa468ede36d5ee84df996c36adea1c1d/68747470733a2f2f736869656c64732e696f2f6d6176656e2d6d657461646174612f763f6d6574616461746155726c3d68747470732533412532462532466d322e64763874696f6e2e6e657425324672656c65617365732532466e657425324664763874696f6e2532464a44412532466d6176656e2d6d657461646174612e786d6c26636f6c6f723d696e666f726d6174696f6e616c266c6162656c3d446f776e6c6f6164)
4.4.0_350
The latest version is:
Gradle
Maven
Changelog
New Contributors
Full Changelog: discord-jda/JDA@v4.3.0...v4.4.0
v4.3.0
In this release, we are adding support for the new interactions API for bots. You can now use slash-commands and buttons with your bot to enhance the integration into the Discord interface.
Some useful resources:
Keep in mind that Slash-Commands are a lot more limited and always require a response. You should make sure you understand the restrictions implied by slash-commands before converting your existing implementations. I wrote some guidelines you should be aware of in this gist: Slash Command Limitations
Support for stage channels will be added in the next release. In the meantime, just imagine a place where it's implemented!
New Features
You can check the full list of pull requests for more details:
4.3.0 Milestone
Thank you all for your contributions!
Deprecation
Detailed javadoc can be found in the deprecated tab of the docs
Installation
The release version is:![latest version](https://camo.githubusercontent.com/490cb3c9f57e8729a9d676df8704c155aa468ede36d5ee84df996c36adea1c1d/68747470733a2f2f736869656c64732e696f2f6d6176656e2d6d657461646174612f763f6d6574616461746155726c3d68747470732533412532462532466d322e64763874696f6e2e6e657425324672656c65617365732532466e657425324664763874696f6e2532464a44412532466d6176656e2d6d657461646174612e786d6c26636f6c6f723d696e666f726d6174696f6e616c266c6162656c3d446f776e6c6f6164)
4.3.0_277
The latest version is:
Gradle
Maven
v4.2.1
With this release, we are addressing the sunset of the jcenter repository. (Read More)
We switched our release to a custom solution which is now hosted on https://m2.dv8tion.net/releases
See below in the Installation section for further details on the new repository.
Slash Commands, Stage Channels, and API v8 are going to be addressed in 4.3.0.
New Features
You can check the full list of pull requests for more details:
4.2.1 Milestone
Thank you all for your contributions!
Deprecation
Detailed javadoc can be found in the deprecated tab of the docs
Installation
The release version is:![latest version](https://camo.githubusercontent.com/490cb3c9f57e8729a9d676df8704c155aa468ede36d5ee84df996c36adea1c1d/68747470733a2f2f736869656c64732e696f2f6d6176656e2d6d657461646174612f763f6d6574616461746155726c3d68747470732533412532462532466d322e64763874696f6e2e6e657425324672656c65617365732532466e657425324664763874696f6e2532464a44412532466d6176656e2d6d657461646174612e786d6c26636f6c6f723d696e666f726d6174696f6e616c266c6162656c3d446f776e6c6f6164)
4.2.1_253
The latest version is:
Gradle
Maven
v4.2.0
All support for AccountType.CLIENT has been removed. We can no longer support this API as it has diverged too much from the bot API.
In this release, we have to take a look at the new Discord API changes. As of late discord has been putting a lot of work into the privacy protection of their users. Unfortunately, that also includes limiting the data available to bots.
Bots are now required to explicitly state which features they intend to use by providing a set of GatewayIntents.
Additionally, bots should no longer directly depend on the cache of users/members with methods like
getUserById()
andgetMembers()
. You should now use lazy loading and load members through methods likeretrieveMemberById
orretrieveMembersByPrefix
.The old default behavior was to perform chunking on startup (explained in wiki article below). However, chunking is now a privileged feature which bots should not depend on. For this reason, we deprecated the old JDABuilder (and DefaultShardManagerBuilder) constructors in favor of new factory methods:
createDefault
createLight
create
I've added a new wiki page that explains this in more detail: Gateway Intents and Member Cache Policy.
We have switched to the new domain
discord.com
. This will be required as of November 7, 2020.New Features
You can check the full list of pull requests for more details:
4.2.0 Milestone
Thank you all for your contributions!
Deprecation
Detailed javadoc can be found in the deprecated tab of the docs
Installation
The release version is:
4.2.0_168
The latest version is:
Gradle
Maven
The jcenter repository now only works with https! Please change your URL from http to https
v4.1.1
A lot of people use nested callbacks for things like sending private messages or adding reactions:
This gets very hard to read and maintain. Instead you can use something like
submit()
which returns aCompletableFuture
to allow using continuations such asthenCompose
and similar. This is great and all but that API is rather bad as it will swallow any errors by default and the error handling methods are not very nice.We added a few new operators for common actions on RestAction:
map
Convert the result of the
RestAction
to a different valueflatMap
Chain another
RestAction
on the resultdelay
Delay the element of the previous step
Let's look at the same example using the new
flatMap
operator:This can be expanded to even more complicated chains:
You can imagine how this would look with just queue/queueAfter:
We also changed the implementation for the Rate Limiter in JDA which will now properly keep track of the "new"
X-RateLimit-Bucket
header to track which endpoints share the same rate-limit. This also means that JDA will now allow multiple requests to the same path while they follow different HTTP methods. For the user this just means, JDA now has a better understanding of how discord will limit your requests.The new rate-limiter also has improved logging. You can now see which routes have what rate-limit by setting the logging level of
net.dv8tion.jda.internal.requests.RateLimiter
to trace. This will log messages such as this:The numbers at the end have this meaning
(remaining requests/allowed requests in the reset time, milliseconds until reset)
.The long bucket id is composed of the
hash
and themajor parameters
of the request. You can figure out which hash is for which bucket fairly quickly by looking for the corresponding cache log:New Features
Deprecation
Detailed javadoc can be found in the deprecated tab of the docs
Installation
The release version is:
4.1.1_101
The latest version is:
Gradle
Maven
The jcenter repository now only works with https! Please change your URL from http to https
Pull Requests
You can view the 4.1.1 Milestone for a list of accepted pull requests for this release. Thank you to everyone who contributed!
v4.1.0
We added support for lazy loading and now allow to disable guild subscriptions!
To enable lazy loading you have to configure a
ChunkingFilter
on your builder of choice [1]. Lazy loading means that JDA will not attempt to request the entire member list of a guild before starting to send events. Instead, members will be loaded on their first activity and members who are never active will never be loaded into cache.1) Example how to enable lazy loading
The more extreme choice is to disable guild subscriptions [2]. This feature completely disables member and user cache for the shard/jda session. Note that if you need methods like
Guild#getMembers
or similar things that require knowledge of the entire member list this is not something you should be using. JDA cannot determine the size of a guild or member join/leave with this disabled. The benefit of this is a greatly reduced memory footprint with the disadvantage of losing member state tracking.2) Example how to disable guild subscriptions
A footnote is that
CacheFlag.VOICE_STATE
can still be tracked and users in voice channels will still be loaded into cache when this cache flag is enabled. This is useful for music bots that want to leave a voice channel if they are alone.You can now ignore specific
ErrorResponse
failures more easily. WithErroResponseException.ignore(...)
you can create a failure consumer that drops anyErrorResponseException
for the specified set of responses. [3]3) Example how to ignore UNKNOWN_MESSAGE errors
New Features
Member#getActiveClients
ErrorResponseException.ignore(...)
Deprecation
Detailed javadoc can be found in the deprecated tab of the docs
GuildUnavailableException
,Guild#isAvailable
this is no longer used, unavailable guilds are no longer in the guild cache. You can check if a guild is unavailable withJDA#getUnavailableGuilds
Guild#retrieveVanityUrl
replace withGuild#getVanityUrl
Invite#getCreationTime
replace withInvite#getTimeCreated
JDA#getVoiceChannelByName
replace withJDA#getVoiceChannelsByName
ShardManager#setGame
replace withShardManager#setActivity
SessionController#getGatewayBot
replace withSessionController#getShardedGateway
Incubating
AccountType#CLIENT
this is most likely going to break soon with impending changes to the gatewayJDABuilder(AccountType)
this will be removed whenAccountType#CLIENT
breaks in the futureActivity#watching
,ActivityType#WATCHING
this is not officially supported by the API but currently usableActivityType#CUSTOM_STATUS
this is currently not usable for bots and can only be seen on other usersAudioManager#getSpeakingMode
,AudioManager#setSpeakingMode
this is not a confident implementation and should be used with careInstallation
The release version is:
4.1.0_81
The latest version is:
Gradle
Maven
Pull Requests
You can view the 4.1.0 Milestone for a list of accepted pull requests for this release. Thank you to everyone who contributed!
v4.0.0
This release bumps the major version because we have done a number of breaking changes. The most notable ones are:
core
->api
GuildController
getX(): RestAction
toretrieveX(): RestAction
@Nonnull
and@Nullable
annotationsMore can be found in the migration guide.
The plan for version 3.X is to keep updating it with bug fixes until 01/01/2020. We recommend migrating your codebase before then.
New Features
MarkdownUtil
A utility to easily apply markdown to textMarkdownSanitizer
A state-machine to sanitize discord markdownGatewayPingEvent
An event for updates to the gateway pingApplicationInfo#getTeam
Team support in applicationsMessage#getMentionedXBag(): Bag<X>
Bag accessors for mentions to check for duplicatesGuild#getVanityCode
andGuild#getVanityUrl
Guild#getBoostTier
,Guild#getBoostCount
, andGuild#getBoosters
Guild#getBannerId
andGuild#getBannerUrl
Guild#getMaxBitrate
andGuild#getMaxEmotes
Guild#getMaxMembers
andGuild#getMaxPresences
Guild#getDescription
Member#getTimeBoosted
AudioReceiveHandler#handleEncodedAudio
andAudioReceiveHandler#canReceiveEncoded
AudioReceiveHandler#includeUserInCombinedAudio
Member#ban
,Member#kick
,Member#mute
,Member#deafen
, andMember#modifyNickname
Guild#getGuildChannelById
andJDA#getGuildChannelById
Guild#kickVoiceMember
MessageChannel#getHistoryFromBeginning
Member#getOnlineStatus(ClientType)
ReactionEmote#isEmoji
,ReactionEmote#getAsCodepoints
, andReactionEmote#getEmoji
AudioManager#setSpeakingDelay
JDA#getUserByTag
,ShardManager#getUserByTag
, andGuild#getMemberByTag
GuildChannel#upsertPermissionOverride
JDABuilder#setVoiceDispatchInterceptor
andDefaultShardManagerBuilder#setVoiceDispatchInterceptor
CacheView#forEachUnordered
,CacheView#applyStream
,CacheView#acceptStream
, andCacheView#lockedIterator
JDA#getRestPing
PaginationAction#skipTo
StoreChannel
Deprecation
Emote#hasRoles
->Emote#canProvideRoles
Guild#retrieveVanityUrl
->Guild#getVanityCode
Invite#getCreationTime
->Invite#getTimeCreated
JDA#getVoiceChannelByName
->JDA#getVoiceChannelsByName
DefaultShardManagerBuilder#setEventManager
->DefaultShardManagerBuilder#setEventManagerProvider
ShardManager#setGame
->ShardManager#setActivity
SessionController#getGatewayBot
->SessionController#getShardedGateway
Incubating
JDABuilder(AccountType)
Activity.watching
AudioManager#setSpeakingMode
andAudioManager#getSpeakingMode
Installation
The release version is:
4.0.0_39
The latest version is:
Gradle
Maven
v3.8.3
In this version we only updated the OkHTTP dependency to the stable 3.13.0 release.
Gradle
Maven
v3.8.2
Important Notice
Recently we have started work on the new major version of JDA
This release signals the end of JDA v3's lifecycle in which we will only be fixing critical issues for the supported timeframe. Once v4 becomes the new stable release we will continue fixing issues with v3 for 6 months to give people with a huge codebase enough time for the conversion. The current expected time for the JDA version 4 release is mid May.
Currently JDA version 4 is in its alpha stadium. This means it receives breaking changes which are not yet supported by 3rd party extensions like lavalink. Once version 4 reaches its beta stadium we will make efforts to help extension developers to adapt to the new ABI provided as soon as possible. We attempt to make a clear separation between what we consider API and internal. We expect extensions to only target the API side of JDA in the future to reduce the possibility of causing incompatibilities.
New features and enhancements will only be coming to JDA 4. This includes new features of Discord as well as overhead reduction such as the changes done to CacheView. One of the major changes coming here is the removal of client-only features such as group channels/messages. We will however continue to support using JDA with
AccountType.CLIENT
but it will be reduced to features available to bot accounts.To track what is happening with JDA 4 you can take a look at the milestone: v4
Pull Requests
Thank you all for your contributions!
Versions
Latest version:
The latest release build:
3.8.2_459
Changelog
Additions
Minn#6688
formatChanges
Fixes
Gradle