Skip to content

v3.7.0 | Better Opus Library Support / New Audio Encryption Modes

Compare
Choose a tag to compare
@MinnDevelopment MinnDevelopment released this 14 Jul 15:26
· 1287 commits to master since this release
cb3ae62

The opus libraries used for encoding/decoding are now exported to their own dependency at opus-java. This allows for a smaller artifact if no audio encoding has to be performed by JDA (like just sending with lavaplayer).

You can find out how to exclude the dependency and consecutively decrease your classpath size by looking at the Download Section in the README.

We additionally now host a jar without opus natives on jenkins (suffix noOpus).

Discord has added new encryption modes to replace old ones, we now implement all currently supported encryption modes for audio. Additionally we reduced the amount of required allocations for sending audio, which should reduce garbage accumulation and CPU usage respectively.

Pull Requests

PR Description
#651 Voice Gateway V4 and new encryption modes
#655 Added enum to represent the flags set on RichPresence
#658 Clear expected member chunks on delete
#659 Externalize opus binaries
#660 Proper closing of resources in MessageAction
#664 Fixed issues with permission management in RoleManager
#665 Permission#VOICE_MOVE_OTHERS does not grant access to a voice channel
#669 Updated invite pattern to only trigger on alphanumeric with underscore and dash
#670 Cleaned up BotRateLimiter for better handling of partial/missing headers
#671 Add unicode flag emoji for each Region
#675 Allow null user_id and provide partial Webhooks [in audit logs]
#676 Added possibility to sync Permissions between channels
#678 Additional invite info
#680 Ability to add members to guilds
#681 Add support for sending multiple files with a webhook
#684 Fixing Role#getAsMention() for public Role
#685 Add option to exclude deprecated voice regions
#687 Improve snowflake checks for rest requests
#692 Add proper boundaries to methods
#694 Don't call toString() eagerly on arguments to format()
#703 Add Guild Features to Invite
#713 Complete rest action on internal server errors

Thank you all for your contributions!

Versions

Latest version: Download

The latest release build: 3.7.0_382

Changelog

Additions

+++ Webhooks can now send multiple files in one message
++ Bots can now add members to guilds (oauth2 access required)
+ Region enum now contains unicode flags
+ We now offer an ability to sync channel permissions for a channel in ChannelManager
+ You can now see webhook information in Audit-Logs
+ Can now specify custom opus library
+ Now giving access to member counts in invites
+ We now expose the flags on RichPresence

Changes

- JDA now uses the voice gateway version 4
- Audio transmission now supports lite and suffix encryption
- Audio transmission now uses less allocations for each package to produce less garbage
- Using getAsMention() on the public role now properly returns @everyone

Fixes

- RestActions should now complete for continuous 500 responses (internal server errors)
- Resources added to MessageAction should now be closed properly on clearing files
- Permission management in RoleManager is now improved
- WebhookManager#setChannel should now properly update the channel
- Improved handling of rate limit headers
- Audit-Logs should now handle null user_ids properly
- RestAction callbacks now use proper generics boundaries such as ? super T
- AFK-Channel setting in GuildManager should work properly now
- Permission checks in openAudioConnection have been corrected, VOICE_MOVE_OTHERS should not grant VOICE_CONNECT
- Invite parsing in Message should now only trigger on alphanumeric with dash

Deprecation

- Removed old updatable managers and associated classes/methods deprecated
- Removed several old methods in events to be replaced by new consistent method names

Gradle

repositories {
    jcenter()
}

dependencies {
    compile 'net.dv8tion:JDA:3.7.0_382'
}

Maven

<dependency>
    <groupId>net.dv8tion</groupId>
    <artifactId>JDA</artifactId>
    <version>3.7.0_382</version>
</dependency>


<repository>
    <id>jcenter</id>
    <name>jcenter-bintray</name>
    <url>http://jcenter.bintray.com</url>
</repository>