Skip to main content

What's new in v3.3

Maintenance mode for v3.2​

After v3.3.0 is released, only bugfixes will be accepted in the 3.2.x branch.

Features​

Support for new Channel Types​

We now support more new channel types like:

  • Stage channels
  • Threads
  • Forums

API changes​

Notable changes​

  • Update gateway API version to 10
  • Calling any method that retrieves restricted data (message content, embeds, etc.) without enabling the MESSAGE_CONTENT will raise an UnsupportedOperationException
  • Created a new interface, TopLevelGuildMessageWithThreadsChannel that extends TopLevelGuildMessageChannel, used for TextChannel and NewsChannel. This interface represents text channels that can have threads (A VoiceChannel is also a TopLevelGuildMessageChannel but cannot have threads).

Signature changes​

  • RestGuild#modifyChannelPositions now takes a List<ChannelPositionModifyRequest> as parameter

  • RestGuild#modifyRolePositions now takes a List<RolePositionModifyRequest> as parameter

  • GuildService#modifyGuildChannelPositions now takes a ChannelPositionModifyRequest[] as parameter

  • GuildService#modifyGuildRolePositions now takes a RolePositionModifyRequest[] as parameter

  • MessageCreateSpec#messageReference now takes a Possible<MessageReferenceData> as parameter

  • MessageCreateMono#withMessageReference now takes a Possible<MessageReferenceData> as parameter

  • ApplicationTeamMember#getRole no longer returns null for the team owner, but TeamMemberRole.ADMIN

  • ApplicationInfo#getOwnerId now returns an Optional<Snowflake>

  • RestGuild#modifyChannelPositions now returns a Flux<Void>

  • GuildService#modifyGuildChannelPositions now returns a Flux<Void>

  • MessageBulkDeleteEvent#getChannel now returns a Mono<MessageChannel>

  • VoiceState#getChannel now returns a Mono<AudioChannel>

  • ResolvedChannel#getName now returns an Optional<String>

  • ResolvedChannel#getEffectivePermissions now returns an Optional<PermissionSet>

  • MessageChannel#getPinnedMessages now returns a PinnedMessagesQueryFlux with a reference pinned message

  • The GuildEmoji class now extends Emoji

  • The Category class now extends BaseTopLevelGuildChannel

  • The GuildMessageChannel class now extends GuildChannel, MessageChannel

  • The PrivateChannel class now extends BaseChannel and implements MessageChannel

  • The StoreChannel class now extends BaseTopLevelGuildChannel and implements CategorizableChannel

  • The NewsChannel class now extends BaseTopLevelGuildChannel and implements TopLevelGuildMessageWithThreadsChannel

  • The TextChannel class now extends BaseTopLevelGuildChannel and implements TopLevelGuildMessageWithThreadsChannel

  • The VoiceChannel class now extends BaseTopLevelGuildChannel and implements AudioChannel, TopLevelGuildMessageChannel

  • The method User#equals is no longer final

  • Renamed method Guild#getGuildEmojiById to getEmojiById

  • Renamed VoiceChannelJoinSpec to AudioChannelJoinSpec

  • Renamed VoiceChannelJoinMono to AudioChannelJoinMono

  • Renamed ReactionEmoji to Emoji

  • Removed field Routes#NITRO_STICKER_PACKS_GET; use Routes#STICKER_PACK_GET.

Removed methods and classes​

  • Removed method AutoModRule#edit(String name, EventType eventType, boolean enabled)
  • Removed method ClientException#isRetryContextStatusCode
  • Removed deprecated method Message#suppressEmbeds
  • Removed deprecated method RestGuild#modifyOwnNickname
  • Removed deprecated method ChannelService#suppressEmbeds
  • Removed com.iwebpp.crypto classes
  • Removed class BaseCategorizableChannel
  • Removed class BaseGuildChannel
  • Removed class BaseGuildMessageChannel
  • Removed class BaseMessageChannel
  • Removed class BaseTopLevelGuildMessageChannel
  • Removed deprecated field Routes#MESSAGE_SUPPRESS_EMBEDS
  • Removed deprecated field Routes#NICKNAME_MODIFY_OWN

Deprecations​

  • Deprecated method IntegrationApplication#getSummary
  • Deprecated method Guild#getFeatures (use Guild#getGuildFeatures)
  • Deprecated method ApplicationInfo#isPublic (use ApplicationInfo#isBotPublic)
  • Deprecated method ApplicationInfo#requireCodeGrant (use ApplicationInfo#botRequiresCodeGrant)
  • Deprecated method ResolvedMember#getNicknameMention (This type of ping has been deprecated in the Discord API)

Other changes​

  • Using an AutoModRuleEditMono or AutoModRuleEditSpec no longer requires all fields to be set
  • Remove Reactor dependency as it is unused in this repo, replaced reactor.util.annotation.* with javax.annotation.* from jsr305
  • Move classes in the encoding module to their own package (discord4j.discordjson.encoding) due to package name clashing with api module (issue when linking both modules in a project declaring a module-info.java)

Behavior changes​

Components Flag​

For messages with components, the components flag is now set to true by default if you add any component from v2 to the message.

New channel hierarchy​

With #960, the channel structure was changed to match more closely how Discord organizes the channels.