- Add
User.isSelf(by @Taubsie in #950) - Publish snapshots to https://repo.kord.dev/snapshots (#961)
- Document deprecation cycle of deprecated declarations (#969)
- Add
UserMessageCreateBuilder.enforceNonce(by @DRSchlaubi in #971) - Implement Monetization (by @viztea in #932)
- Add
MemberProfileAutoModerationRule(#974)
- Bump
DeprecationLevels after 0.14.0 (#944) - Update Auto Moderation builders (#979)
- Link to JDK 23 in Dokka output (#980)
- Fix deserialization of members (by @NoComment1105 in #955)
- Fix deserialization of
Heartbeatevents (#957) - Fix
getMemberOrNullandgetGuildMemberscaching only user data (by @Galarzaa90 in #964) - Fix misuse of reified type parameters (#981)
Updated in #942, #954, #958, #975, #976, and #986 (not including dependencies only needed for developing Kord)
- Kotlin 1.9.24 -> 2.0.21
- Ktor 2.3.11 -> 3.0.0
- kotlinx.coroutines 1.8.1 -> 1.9.0
- kotlinx.serialization 1.6.3 -> 1.7.3
- kotlinx-datetime 0.6.0 -> 0.6.1
- kord-cache 0.4.0 -> 0.5.4
- kotlin-logging 6.0.9 -> 7.0.0
- SLF4J 2.0.13 -> 2.0.16
- kotlin-node 20.11.30-pre.751 -> 22.5.4-pre.818
- kotlin-multiplatform-bignum 0.3.9 -> 0.3.10
- Stately 2.0.7 -> 2.1.0
- AtomicFU 0.24.0 -> 0.25.0
- Support other
SerialFormats inLongOrStringSerializer(#937)
- Bump
DeprecationLevels after 0.13.0 (#908) - Rewrite
Event.DeserializationStrategy(#923) - Deprecate application command events (#927)
- Rewrite
VoiceEvent.DeserializationStrategy(#925) - Switch to OkHttp as http client on jvm (by @DRSchlaubi in #928)
DiscordVoiceState.memberuses incorrect serial name (by @viztea in #914)- Use actual zero width space in
EmbedBuilder(by @matytyma in #917) - Fix some cache links (#934)
Updated in #920, #929 and #943
- Gradle 8.5 -> 8.7
- Kotlin 1.9.21 -> 1.9.24
- Ktor 2.3.7 -> 2.3.11
- kotlinx.coroutines 1.7.3 -> 1.8.1
- kotlinx.serialization 1.6.2 -> 1.6.3
- kotlinx-datetime 0.5.0 -> 0.6.0
- kotlin-logging 6.0.1 -> 6.0.9
- SLF4J 2.0.9 -> 2.0.13
- kotlin-node 18.16.12-pre.619 -> 20.11.30-pre.751
- kotlin-multiplatform-bignum 0.3.8 -> 0.3.9
- Stately 2.0.6 -> 2.0.7
- KSP 1.9.21-1.0.16 -> 1.9.24-1.0.20
- KotlinPoet 1.15.3 -> 1.16.0
- JUnit Jupiter 5.10.1 -> 5.10.2
- MockK 1.13.8 -> 1.13.11
- Dokka 1.9.10 -> 1.9.20
- AtomicFU 0.23.1 -> 0.24.0
- Binary compatibility validator 0.13.2 -> 0.15.0-Beta.2
- gradle-buildconfig-plugin 5.1.0 -> 5.3.5
- Foojay Toolchains Plugin 0.7.0 -> 0.8.0
- Replace gradle/gradle-build-action with gradle/actions/setup-gradle
- Replace gradle/wrapper-validation-action with gradle/actions/wrapper-validation
- Update README (#915)
- Disable timeouts for Kotlin/JS tests (#926)
- Remove unused resource files (#935)
- Enable binary compatibility validation for KLibs (#929)
- Fix test related Gradle deprecation warnings (#936)
- Create
sourceLinkURLwith non-deprecatedURIconstructor (by @SebastianAigner in #938)
This release fixes an exception when trying to deserialize Permissions contained in GuildAuditLogEntryCreateEvents.
Kord expected to receive JSON strings while
Discord is sending JSON numbers.
See #911 and #912.
This release fixes a bug where the Spanish Latin America Locale (es-419) couldn't be deserialized correctly, so users
with that Locale couldn't interact with Kord bots via interactions.
- Add
WebhookMessageCreateBuilder.appliedTags(by @lukellmann in #899)
- Bump
DeprecationLevels after 0.12.0 (by @lukellmann in #896) - Remove deprecation from
User.discriminatorandUser.tag(by @lukellmann in #901) - Align
ArchiveDurationwith generated kord enums (by @lukellmann in #902) - Deprecate
DiscordBitSetSerializerandLocale.Serializer(by @lukellmann in #903)
- Support Spanish (Latin America) (by @gdude2002 in #906)
Updated in #900
- Gradle 8.4 -> 8.5
- Kotlin 1.9.20 -> 1.9.21
- Ktor 2.3.6 -> 2.3.7
- kotlinx.serialization 1.6.1 -> 1.6.2
- kotlinx-datetime 0.4.1 -> 0.5.0
- kotlin-logging 3.0.5 -> 6.0.1
- Stately 2.0.5 -> 2.0.6
- KSP 1.9.20-1.0.14 -> 1.9.21-1.0.16
- KotlinPoet 1.15.1 -> 1.15.3
- AtomicFU 0.23.0 -> 0.23.1
- gradle-buildconfig-plugin 4.2.0 -> 5.1.0
- actions/setup-java v3 -> v4
- Add interaction permissions to
MemberDataandMember(by @Tmpod in #884) - Add
SelectDefaultValues (by @lukellmann in #881) - Add
Permission.CreateGuildExpressionsandPermission.CreateEvents(by @lukellmann in #892) - Add
StageInstanceCreateRequest.guildScheduledEventId(by @lukellmann in #893)
- Bump
DeprecationLevels (by @lukellmann in #879) - Use debug log level for unknown gateway event names (by @viztea in #890)
- Add common
MessageBuildersupertype (by @lukellmann in #891)
- Fix
DiscordAuditLogEntry.userIdnullability (by @lukellmann in #885)
Updated in #883, #888 and #894
- Gradle 8.3 -> 8.4
- Kotlin 1.9.10 -> 1.9.20
- Ktor 2.3.4 -> 2.3.6
- kotlinx.serialization 1.6.0 -> 1.6.1
- Stately 2.0.2 -> 2.0.5
- KSP 1.9.10-1.0.13 -> 1.9.20-1.0.14
- KotlinPoet 1.14.2 -> 1.15.1
- JUnit 5 5.10.0 -> 5.10.1
- MockK 1.13.7 -> 1.13.8
- Dokka 1.9.0 -> 1.9.10
- AtomicFU 0.22.0 -> 0.23.0
- gradle-buildconfig-plugin 4.1.2 -> 4.2.0
- Add interaction channel field (by @NoComment1105 in #810)
- Add
avatar_decorationto user (by @NoComment1105 in #852) - Add stage channel create functions (by @NoComment1105 in #856)
- Implement custom status (by @DRSchlaubi and @lukellmann in #857)
- Allow modifying
GuildMemberFlags(by @lukellmann in #865) - Add
RoleFlags(by @lukellmann in #866) - Add
AttachmentFlags(by @lukellmann in #867) - Add
MediaChannels (by @lukellmann in #853) - Allow modifying
GuildOnboarding(by @lukellmann in #819) - Add
ReactionAddEvent.messageAuthorId(by @lukellmann in #873) - Add new
AuditLogEvents (by @lukellmann in #874) - Add
with_countsparam forGET/users/@me/guilds(by @lukellmann in #875) - Add
TeamMemberRole(by @lukellmann in #876) - Add
AuditLogEntryOptionalInfo.integrationType(by @lukellmann in #877)
- Bump
DeprecationLevels (by @lukellmann in #844) - Generate bit flags (by @DRSchlaubi and @lukellmann in #766)
- Bring kord enum API closer to bit flags API (by @lukellmann in #861)
- Replace companion object serializers (by @lukellmann in #869)
- Remove type parameter from
Choice(by @lukellmann in #868)
- Correctly close zlib stream when gateway disconnects (by @DRSchlaubi in #849)
- Fix usage of
BigIntegerinDiscordBitSet.value(by @lukellmann in #864) - Fix deserialization of
DiscordApplication(by @lukellmann in #871)
Updated in #842, #859 and #872
- Gradle 8.1 -> 8.3
- Kotlin 1.8.21 -> 1.9.10
- Ktor 2.3.0 -> 2.3.4
- kotlinx.coroutines 1.7.1 -> 1.7.3
- kotlinx.serialization 1.5.1 -> 1.6.0
- kotlinx-datetime 0.4.0 -> 0.4.1
- kotlin-node 18.16.3-pre.546 -> 18.16.12-pre.619
- Stately 2.0.0-rc1 -> 2.0.2
- KSP 1.8.21-1.0.11 -> 1.9.10-1.0.13
- KotlinPoet 1.13.2 -> 1.14.2
- JUnit 5 5.9.3 -> 5.10.0
- MockK 1.13.5 -> 1.13.7
- SLF4J 2.0.7 -> 2.0.9
- Dokka 1.8.10 -> 1.9.0
- AtomicFU 0.20.2 -> 0.22.0
- Binary compatibility validator 0.13.1 -> 0.13.2
- gradle-buildconfig-plugin 4.0.4 -> 4.1.2
- Foojay Toolchains Plugin 0.4.0 -> 0.7.0
- actions/checkout v3 -> v4
- Remove unnecessary
RedundantVisibilityModifiersuppression (by @lukellmann in #858) - Don't use value class
ResetwithAtomicRef(by @DRSchlaubi and @lukellmann in #863)
- Support new username system (by @lukellmann in #825)
- Add
Permission.UseExternalSounds(by @lukellmann in #833) - Add new error codes (by @lukellmann in #834)
- Add mention raid protection to Auto Moderation (by @lukellmann in #830)
- Add support for Application Role Connection Metadata (by @lukellmann in #836)
- Add support for join raid protection (by @lukellmann in #832)
- Bump
DeprecationLevels (by @lukellmann in #821) - Remove no longer needed pipeline interception (by @lukellmann in #824)
- Change
parentIdandlockPermissionsToParentto Optionals (by @Tmpod in #828)
- Fix deserializing embeds with
nullauthor url (by @lukellmann in #839)
Updated in #826
- Kotlin 1.8.10 -> 1.8.21
- Ktor 2.2.4 -> 2.3.0
- kotlinx.coroutines 1.6.4 -> 1.7.1
- kotlinx.serialization 1.5.0 -> 1.5.1
- kotlin-node 18.14.0-pre.502 -> 18.16.3-pre.546
- KSP 1.8.10-1.0.9 -> 1.8.21-1.0.11
- KotlinPoet 1.12.0 -> 1.13.2
- JUnit 5 5.9.2 -> 5.9.3
- MockK 1.13.4 -> 1.13.5
- AtomicFU 0.20.0 -> 0.20.2
- Binary compatibility validator 0.13.0 -> 0.13.1
- gradle-buildconfig-plugin 3.1.0 -> 4.0.4
- Simplify CI (by @lukellmann in #823)
- Use main as the permanent default branch (by @lukellmann in #831)
- Support Kotlin/JS (by @DRSchlaubi and @Lukellmann in #775)
- Add support for voice messages (by @DRSchlaubi and @Lukellmann in #814)
- Bump
DeprecationLevels (by @Lukellmann in #794) - Replace
IconwithAsset(by @oluiss and @Lukellmann in #703)
- Fix some
EntitySupplyStrategytoStrings being incorrect (by @GreemDev in #811) - Fix List Nitro Sticker Packs endpoint (by @Lukellmann in #816)
- Fix
InstantInEpochMillisecondsSerializerTeston JS (by @Lukellmann in #818)
Updated in #783
- Gradle 8.0.2 -> 8.1
- Add inspection for missing
@KordDsl(by @DRSchlaubi in #800) - Fix Qodana findings (by @Lukellmann and @DRSchlaubi in #812)
- Clean up (by @Lukellmann in #813)
- Improve
GenerateKordEnumandAnnotationArguments(by @Lukellmann in #817)
- Add
ApplicationFlag.ApplicationAutoModerationRuleCreateBadge(by @NoComment1105 in #802) - Add error code 50163 (by @NoComment1105 in #803)
- Add
Guild.maxStageVideoChannelUsers(by @NoComment1105 in #804) - Add guild onboarding (by @NoComment1105 and @Lukellmann in #805)
- Add new permissions (by @NoComment1105 in #795)
- Add inspection for missing Optional default values (by @Lukellmann in #797)
- Fix
ClassCastExceptioncaused byTextChannelThread.getParent()(by @Lukellmann in #796)
- Add forums (#684)
- Add new select menu types (by @oluiss in #707 and @Lukellmann in #721)
- Add
UserFlag.ActiveDeveloper(by @oluiss in #720) - Add new
GuildFeatures and allow editing them (by @Lukellmann in #722) - Add new error codes (by @Lukellmann in #723 and @NoComment1105 in #742 and #757)
- Add
Locale.INDONESIAN(by @Lukellmann in #738) - Add
KeywordAutoModerationRule.allowedKeywords(by @Lukellmann in #731) - Add support for nsfw commands (by @Lukellmann in #725)
- Add missing
MessageTypes (by @NoComment1105 in #744) - Add
afterto audit log get (by @NoComment1105 in #745) - Add support for gif stickers (by @NoComment1105 in #750)
- Add stage channel message types (by @NoComment1105 in #759)
- Add audit log entry create event (by @NoComment1105 in #751 and #761)
- Add missing integration events (by @NoComment1105 in #761, #763 and #764)
- Add guild member flags (by @NoComment1105 in #760)
- Add the ability to receive unknown events (by @DRSchlaubi in #769)
- Add
BlockMessageAutoModerationAction.customMessage(by @Lukellmann in #774) - Add silent messages and extend builders (by @DRSchlaubi in #762)
- Add Role subscriptions (by @NoComment1105 in #743 and @Lukellmann in #781)
- Add a nullable variant of
getAuthorAsMember(by @NoComment1105 in #784)
- Bump
DeprecationLevels (by @Lukellmann in #716) - Deprecate
GuildFeature.PrivateThreads(by @Lukellmann in #724) - Stabilize
KordConfigurationandKordConstants(by @Lukellmann in #753) - Make
StageChannelimplementTopGuildMessageChannel(by @DRSchlaubi in #756) - Deprecate
getGuild()functions that callgetGuildOrNull()under the hood (by @NoComment1105 in #728) - Add bucket ID to the discovered bucket trace log (by @MrPowerGamerBR in #699)
- Generate
EncryptionModeinstead of using an enum (by @lost-illusi0n in #737) - Fix nonce deserialization for big integers (by @Lukellmann in #765)
- Fix
MessageChannelBehavior.typeUntil(by @Lukellmann in #768) - Make
Snowflake's ordering consistent withequals(by @Lukellmann in #773) - Fix various bugs in
DiscordBitSet(by @Lukellmann in #772) - Use 74 byte ip discovery packet instead of the deprecated 70 byte discovery packet (by @lost-illusi0n in #776)
- Fix breaking changes and bugs before release (by @Lukellmann in #793)
Updated in #732, #739, #755, #782 and #788
- Gradle 7.5.1 -> 8.0.2
- Kotlin 1.7.20 -> 1.8.10
- KSP 1.7.20-1.0.8 -> 1.8.10-1.0.9
- Ktor 2.1.3 -> 2.2.4
- kotlinx.serialization 1.4.1 -> 1.5.0
- kotlin-logging 2.1.23 -> 3.0.5
- SLF4J 1.7.36 -> 2.0.7
- Dokka 1.7.20 -> 1.8.10
- AtomicFU 0.18.5 -> 0.20.0
- Binary compatibility validator 0.12.1 -> 0.13.0
- JUnit 5 5.9.1 -> 5.9.2
- MockK 1.13.2 -> 1.13.4
- Use
libs.versions.tomland clean gradle files (by @Lukellmann in #719) - Clean up (by @Lukellmann in #730)
- Use AtomicFU compiler plugin (by @Lukellmann in #740)
- Fix CI badge in readme (by @DRSchlaubi in #741)
- CI updates and fixes (by @DRSchlaubi and @Lukellmann in #770, #778, #780 and #790)
- Add support for Auto Moderation (#647 #697 #713)
- Add error 240000 (#676)
- Add
ApplicationFlag.ApplicationCommandBadge(#677) - Parameter for deleting old messages in
GuildMessageChannelBehavior.bulkDelete(#692) - Add
application_commandsto audit log (#681) - Add
UserPremium.NitroBasic(#704) - Make ephemeral messages deletable (#706)
- Add
Kord.getGuildOrNull(#714)
- Change attachment
InputStreamtoChannelProvider(#682) - Deprecate
GuildFeature.Commerce(#678) - Update create guild ban endpoint (#679)
- Update voice state modification (#680)
- Use structured concurrency for
MessageChannelBehavior.withTyping(#687) - Generate kord enums with KSP (#686 #698)
- Use gateway url provided in
Readyevent for resuming (#666) - Bump
DeprecationLevels (#688) - Properly implement Identify rate limiting (#693)
- Fix gateway events created with
buildJsonObjectfailing to be deserialized (#683) - Fix
with_countparameter typo (#690) - Fix default avatar URL not working (#691)
- Make
LinearRetrybehave linearly for all inputs (#702)
- Kotlin 1.7.10 -> 1.7.20
- Ktor 2.1.0 -> 2.1.3
- kotlinx.serialization 1.3.3 -> 1.4.1
- AtomicFU 0.18.3 -> 0.18.5
- Binary compatibility validator 0.11.0 -> 0.12.1
- Dokka 1.7.10 -> 1.7.20
- JUnit 5 5.9.0 -> 5.9.1
- MockK 1.12.5 -> 1.13.2
- Events no longer implement
CoroutineScopewhich caused a memory leak (#665 for migration steps) - Bump deprecations (#653)
- New error codes (#656 #655 #654)
- Add audit log reason to Modify Guild MFA Level endpoint (#668)
- Add events custom context (#667)
- Voice: Add helper to move/update voice connections (#657)
- Fix MessageStickerType constructor initialization deadlock (#670)
- Use suppressed exceptions for stack trace recovery (#658)
- Upgrade to Gradle 7.5.1 (#662)
- Changes to Kord's annotations (#659)
- Add various error codes (#644 #639 #637 #649)
- Add Kord Proxy Builder (#618)
- Add
Guild#cachedThreadsto fetch cachedThreads (#634) - Add Missing string option length fields (#650)
- Add nsfw to voice channels create and modify requests (#642)
- Add app_permissions field (#646)
- Add Modify Guild MFA Level endpoint (#640)
- Add API version configuration (#601)
- Add Voice text (#614)
- Snowflake destructuring (#609)
- Update Message Type names (#645)
- Thread archive durations are no longer boost locked (#636)
- Improve RestClient's stacktrace recovery (#648)
- Update application command fields (#638)
- Remove audit log reason from Modify Guild Channel Positions endpoint (#641)
- Update Identify Connection Properties field names (#643)
- Fix nonce deserialization (#632)
- Voice: heartbeat nonce is zero (#619)
- Voice: voice connection dropping unexpectedly (#621)
- Voice: Fix typo in DefaultAudioPacketProvider declaration (#610)
- Use core event for MessageDelete in enableEvent (3dbb29f)
- Update docs for Message.Interaction.name (71b185e)
- Binary compatibility validator 0.9.0 -> 0.10.1
- Kotlin 1.6.21 -> 1.7.10
- Dokka 1.6.20 -> 1.7.0
- AtomicFU 0.17.2 -> 0.18.2
- gradle-buildconfig-plugin 3.0.3 -> 3.1.0
- kotlinx-datetime 0.3.2 -> 0.4.0
- kotlinx.coroutines 1.6.1 -> 1.6.3
- kotlinx.serialization 1.3.2 -> 1.3.3
- kotlin-logging 2.1.21 -> 2.1.23
- Mockk 1.12.3 -> 1.12.4
- Ktor 2.0.0 -> 2.0.3
- Slash commands permissions v2 (#604)
- Add feature variant for voice (#608)
- Deserialize timestamps as Instant (#605)
- Update Channel Builders (#606)
- Use ktor Base64 functions (#600)
- Refactor Choice serializer (#598)
- Nullable user_limit (#602)
- Stricter Locale parsing (#597)
- Add error 50080 (#607)
- Kotlin 1.6.20 -> 1.6.21
- BinaryValidator 0.8.0 -> 0.9.0
- Paginate getting bans (#585)
- Order locales like discord/discord-api-docs#4680 (#573)
- Update stage instance requests (#581)
- image_hash audit log change key (#578)
- Nullable channel name (#579)
- Make Optional a sealed class again (#588)
- Deprecate IntegrationApplication.summary (#580)
- Channel type GUILD_DIRECTORY (#583)
- Refactor common RateLimiter (#577)
- Deprecate nickname mentions (#590)
- Deserialize time as Duration (#586)
- Add ANIMATED_BANNER feature (#584)
- Add strategy to mitigate loss of stacktrace through Ktors SuspendFunctionGun (#563)
- Add Application default authorization links and tags (#582)
- Add minValue and maxValue to ApplicationCommandOption (#572)
- Add Version constant injection (#576)
- Add support for slash command localizations (#570)
- Add guild_id to Interaction Data (#591)
- Fix conflict between property name and class discriminator (#595)
- voice: fix encryption buffer size (#568)
- Fix Guild Scheduled Event Gateway Events (#569)
- binaryValidator: 0.6.0 -> 0.8.0
- Kotlin: 1.6.10 -> 1.6.20
- Gradle 7.4 -> 7.4.2
- AtomicFu 0.17.0 -> 0.17.2
- dateTime 0.3.1 -> 0.3.2
- coroutines 0.6.0 -> 0.6.1
- mockk 1.7.30 -> 1.7.36
- Ktor 1.6.7 -> 2.0.0
- As of 0.8.0-M12 Message Content Intent is required to receive message related events.
- Deprecate store channels (#564).
- Hotfix: revert nullable to optional changes in VoiceState (#567).
- nullable requestToSpeakTimestamp (#566).
- Fix oversights in #561 (#565).
- Discord docs updates (#540 #561).
- User Agent header (#558 #562).
- Unsafe deferred responding (#557).
- Use gateway v10 (#554).
- Audit Log Change Key "type" to string values (#559).
- Switch to v10 for rest (#550)
- Invite and Application revamp (#530)
- Update enableEvent() (#553)
- Invite and Application revamp (#530)
- Revamp interaction implementations (#543 #533 #546)
- Documentation: clarify the usage of
Kord.restOnly - Update Permissions (#544)
- Add selfVideo property (#545)
- Fix GuildScheduledEvents json representation and modify function (#549)
- Forms support (#531)
- Add support for attachment options in chat input interactions (#524)
- Add error 40060 40004(#532 #523)
- fix locale typos (#541)
- Add missing default value for strategy for getWebhookWithTokenOrNull (#539)
- Change members resolved objects to DiscordInteractionGuildMember (#502)
- Upgrade gradle to 7.4 and its wrapper
- Fix .jpg not being detected (#458)
- Fix gateway not using provided threshold (#465)
- Fix bug causing role PermissionOverwrites being added for members (#479)
- Fix Team.ownerUserId returning the wrong id (#509)
- Fix exception when choices are never set (#505 #512)
- Voice: fix race condition where heartbeat is sent before authentication (#511)
- Allow providing limit in AuditLogGetRequestBuilder (#477)
- Optional timestamp style (#516)
- No longer send Authorization header on endpoints without authorization (#450 #486)
- Suppliers and pagination logic refactor (#484)
- ComponentBuilders refactor (#494)
- Enable explicit API (#474)
- Add mutes support (#448 #508)
- Add channel types in slash commands (#464)
- Add ActionInteractionCreateEvent (#456)
- Add autocomplete support (#456)
- Add disabled property to SelectMenuComponent(#492)
- Add limit to AuditLogGetRequestBuilder (#477)
- Add missing Webhook and Interaction functionality (#507)
- Add new JsonErrorCodes and fix existing ones (#482 #504 #501)
- Add new fields and parameters for scheduled events and invites (#518)
- Add new fields for attachments. (#506)
- Add interaction localization support
- Kotlin: 1.5.10 -> 1.6.10
- KotlinxSerialization: 1.2.1 -> 1.3.2
- Coroutines: 1.5.0 -> 1.6.0
- Ktor: 1.6.0 -> 1.6.7
- AtomicFu: 0.16.1 -> 0.17.0
- Datetime: 0.2.1 -> 0.3.1
- KotlinLogging: 2.0.6 -> 2.1.21
- binaryValidator: 0.5.0 -> 0.6.0
- Embed description limit should be 4096 (#419)
- use behavior over entity in voice connect method (#428)
- rewrite frame interceptor (#427)
- Unify permission overwrite API (Fix #302) (#420)
- Make Snowflake.toString() more idiomatic, and deprecate .asString (#441)
- fix ButtonBuilder#emoji function (#431)
- Fix bom dependencies (#440)
- fix regression in the default frame interceptor (#443)
- Fix missing '=' in GuildBehavior.toString() (#442)
- UserFlag and GuildFeature add-on (#422)
- Add support for receiving voice and opening up the voice api (#386)
- implement all encryption modes documented by discord (#424)
- explicit api for voice (#425)
- Old properties for Update events (#438)
- Add AutoComplete (#435)
- Implement Stage events (#421)
- Add
rtcRegionto builders. (#413) - Reintroduce
InteractionResponseBehavior#followUpEphemeral
- Fix
IntChoicenot taking aLong. (#414) - Fix
InteractionBehavior#respondEphemeralmissing ephemeral flags. (#414) - Fix target type of message command to
Message(Behavior)instead ofUserBehavior(#414)
XBehavior#asXnow returns itself if the concrete type is already a complete entity. UseXBehavior#fetchXto always retrieve the most up-to-date version of an entity (#396)- EphemeralBuilder builders have been unified with the persistent messages. (#397)
- Core events now accept a coroutineScope in the constructor (#391)
- Start thread methods have introduced a builder (#398)
- Shards have been moved to
dev.kord.gateway.builder(#409)
- Intents are now lazily evaluated (#409)
- Enable explicit api mode for core module (#406)
- Fixes and improvements for Snowflake (#370)
- Application commands improvements (#374 #384 #387)
- MasterGateway and Interceptors are switched into interfaces (#391)
- Ephemeral files support (#397)
- Add missing invitable field (#398)
- Role icons support (#402)
- Per-Guild avatar support (#401)
- Add discord messaging timestamps (#385)
- Add named files and attachments (#379)
- Add missing avatar and username properties to
WebhookMessageCreateBuilder(#376)
- Serialize NumberChoice as a Double, not as a String (#405)
- Sort threads as documented by discord (#411)
- Fix NPE on ThreadChannelDelete (#373)
- slash commands and interactions have been redesigned to support the new command and interaction types.
- Move SlashCommands functions to Kord. (#366)
- ApplicationCommands are now cached. (#366)
- Interaction events are split up into distinct events. (#366)
- Proper hierarchy for applications commands, interactions and their events. (#366)
- Rename
UsePrivate/PublicThreadstoCreatePrivate/PublicThreads. (#366) - Include json error in exception message. (#369)
- Experimental Voice support. #(363)
- Context support. (#366)
- Add
ResolvedObjects#messagesto resolve messages. (#366) - Add
ChannelBehavior#of/OrNullto safely get a typed channel. (#366) - Add type safe arguments for chat input commands. (#366)
- Add SendMessagesInThread Permission. (#366)
- Ephemeral followups not being passed the ephemeral flags. (#368)
- Missing optional default values in some data types. (#362)
- incorrect serialization of
CommandArguement. (#362)
- Fixed the space in active threads get endpoint causing it to fail. (5dd3f380)
- Fixed incorrect serialization of
NUMBERoption. (#360) - Fixed Missing properties in
MemberData,InteractionDataand others. (#361)
Regionno longer has avipproperty (5dd3f380)
- Fixed Typo in ephemeral acks body causing acking to fail.
- interaction acknowledgements no longer require data
- Add SerialName for
InteractionApplicationCommandCallbackData#allowedMentions
- Added support for threads. (#349 #358 #353 d1bf947)
- Added missing JSON error codes. (#347)
- Added support for slash command number type arguments. (#351)
- Added support for user banners. (#352)
- Added missing guild features. (d1bf947)
- The
Channelhierarchy has been changed to support threads. Some behavior inGuildChannel(Behavior)andGuildMessageChannel(Behavior)has been removed to accommodateThreadChannels and moved toTopGuildChannel(Behavior)andTopGuildMessageChannel(Behavior)respectively. (#353)
- Fixed missing audit log reasons on certain endpoints. (#346)
- Promote user property in component interaction to a data object.
- Fixed
ComponentInteraction#userthrowing aNullPointerExceptionwhen the interaction was created in a direct message.
- Add StoreEntitySupplier.
- Add caching rest strategy.
- Add cache-rest caching strategy.
- Add select menus.
- Fix average ping conversion in
MasterGateway.
- Make
UpdateMessageInteractionResponseCreateBuilderfields nullable. - type in option builders is now private
- DiscordComponent
- InteractionCallbackData
- ApplicationInteractionData
- ComponentData
- CommandInteraction
- OptionsBuilder
- UpdateMessageInteractionResponseCreateBuilder
- Allow adding a mentionable argument to commands
- Make
Intent#valuesa getter function.
- Mentionable arguments now correctly retrieve their entity.
Intent.valuesemitting null when filtering.
BaseInteractionResponseBuilderBaseInteractionResponseBuilderBaseInteractionResponseModifyBuilderEphemeralInteractionResponseModifyBuilderPublicInteractionResponseModifyBuilderMessageModifyBuilderEditWebhookMessageBuilderInteractionResponseModifyRequestFollowupMessageBuilderPublicFollowupMessageModifyBuilderEphemeralFollowupMessageModifyBuilderPublicFollowupMessageCreateBuilderEphemeralFollowupMessageCreateBuilderFollowupMessageModifyRequestComponentInteraction
- Message-related builders have been changed to accept
null(for non-collections) and "empty list" (for collections) when editing a message. This makes it possible to remove fields from a message without providing a substitution. FollowupMessageBuilderno longer has thettsfield, since it does not apply to all its subclasses.
ActionRowComponentproperly returns its children.ComponentInteraction#buttonis now nullable as its documentation implies.
- Implement voice stage channel (#239)
- Add "Competing" activity type (#272)
- Add unsafe application commands behavior (#281)
- Add buttons to Activity (#287)
- Add Message.applicationId (#289)
- Implement Stage instances (#291)
- Add Message interaction (#283)
- Add Ephemeral embed support (#296 #321)
- Update deprecated message (#280)
- Sealed message types (#282)
- Improve slash command API and add support for components (#310 #294 #312 #324)
- Live entities can define a parent job (#304)
- Close InputStreams used for attachments (#309 #296)
- Make Updatestatus activities not-null (#274)
- Fix GuildUpdate core handling (#284)
- Fix memory issues related to Permission combining (#277)
- kotlin 1.4.32 -> 1.5.10
- kotlinxSerialization 1.1.0 -> 1.2.1
- ktor 1.5.2 -> 1.6.0
- kotlinxCoroutines = 1.4.2 -> 1.5.0
- kotlinLogging 2.0.4 -> 2.0.6
- atomicFu 0.15.1 -> 0.16.1
- binaryCompatibilityValidator 0.4.0 -> 0.5.0
- datetime 0.2.1
- Unhandled missing access when trying to get vanity url with the feature disabled. #264
- Added slash commands support. #145 #201 #253 #249
- Added core representation of templates #136
- Added overloaded operations for Intents and Permissions. #152 #203
- Added welcome screens. #141
- Added
Kord#getInvite. #143 - Added pending property to member. #153
- Added
Kordfunctions to get webhooks. #232 - Added ability to send a message through request. #184
- Added extension methods for
LiveEntity. #177 - Added
USE_SLASH_COMMANDSpermission. #208 - Added
Permission#valuesandPermissions#values. #255 - Added allowed mentions. #256
- Added new webhook endpoints. #217
- Added missing error codes. #250
- Added
Message#messageReference. #245
- Fix
GuildBehavior#getWidgetOrNull#138 - Fix nullity in builders. #135
- Fix channelId nullity in UpdateVoiceState. #144
- Fix provider nullity in embeds. #151
- Fix WebhookType.Incoming incorrect value. #156
- Fix
DiscordErrorResponseinability to consume full input #162 - Fix
MessageCreateEvent#withStrategyreturningStrategizable. #233 - Fix serialization issues for
DiscordActivityPartySize. #168 - Fix
Attachment#isImagecheck. #172 - Fix
rpc_originsbeing nullable instead of optional. #173 - Fix
LiveMessagenot being shut down on bulk delete. #174 - Fix
Message#authorAsMemberthrowing if guild was not found. #178 - Fix swapped
muteanddeafinVoiceStateData. #188 - Fix
preview_assetnot being optional. #206. - Fix parsing raw responses into Json. #205
- Fix typos in webhook and welcome screen routes. #219 #220
- Fix gateway 0 blocking other shard gateways from running. #194
- Fix unhandled unknown channel types. #251
- Allow controlling the number of total shards #196
- Replaced invoke functions with top-level factory functions. #210
- Allow multiple file upload. #247 #228 #229
- Added missing contracts #243
- kotlin 1.4.10 -> 1.4.32 #198
- kotlinx.serialization 1.0.0 -> 1.1.0 #198
- kotlinx.coroutines 1.4.0 -> 1.4.2 #198
- kotlinx.atomicfu 0.14.4 -> 0.15.1 #198
- kotlinx.binary-compatibility-validator 0.2.3 -> 0.4.0 #198
- ktor 1.4.1 -> 1.5.2 #198
- kotlin-logging 2.0.3 -> 2.0.4 #198
- Added support for
MessageSticker. #119 - Added support for
RoleTags. #119 - Added
GuildBehavior#getMembers. #119 - Added the ability to move a channel under a category when moving channels. #119
- Fixed
MemberBehavior#edit, now returning a member. #120 Gateway#onnow allows suspending consumers.- Fixed
GuildBehavior#editSelfNicknameincorrectly parsing the response json. #125 - Fixed getting user's avatar url. #128
VoiceServerUpdateEvent#endpointis now nullable. #119- Moved com.gitlab.kord.common to dev.kord.common. #122
- Moved com.gitlab.kord.rest to dev.kord.rest. #122
- Moved com.gitlab.kord.gateway to dev.kord.gateway. #122
- Moved com.gitlab.kord.core to dev.kord.core. #122
- Removed deprecated API from 0.6.x.
- Re-added
valuesinIntentandIntents. - Added support for inline replies and
MessageBehavior#replyto quickly create a reply to a message. #110 - Added a shortcut to create channels from a
CategoryBehavior, giving them a parentId by default. #109 - Added
Gateway#requestMembersandGuildBehavior#RequestMembersas a shortcut for theRequestGuildMemberscommand.
- Fixed Color bug when converting from java.awt.Color with alpha. #114
- Gateway reconnect retries reset on handshake. #68
- Updated API to Discord V8. #108
- Introduced Optionals in lower level API and core xData classes. #108 #95
- De-inlined Snowflake and implemented it into the lower level API. #108
- Rewrote
AuditLogand its child classes and introduced them to tocore. #108 Kord#eventsis now aSharedFlowwhich can be configured viaKordBuilder#eventFlow. #102Imagenow supports image sizes that are common for Discord image resources. #98java.awt.Colorhas been replaced withcom.gitlab.kordlib.common.Color. #5coreEntities should have a meaningfultoStringrepresentation. #88- Request builders no longer have
lateinitfields, these are now required arguments in the builder DSLs. #108 PermissionsandIntentsnow have more and easier constructors. #103
RestRequestExceptionnow holds a reference to an (optional)DiscordErrorResponsewith a more specific error message and code.PremiumTiernow has amaxEmotesfield. #74- Added a
getDmChannelOrNulltoUserBehaviorto safely try and open a DmChannel with a user. #111
GuildBehavior#getVanityUrlwill now correctly return null when the guild does not have a vanity url.- Voice channels can now change their topic.
- Fixed
CacheEntitySuppliernot returning certain cached entities.
- Kotlin 1.4.0 -> 1.4.10
- ktor 1.4.0 -> 1.4.1
- kotlinx.serialization 1.0.0-RC -> 1.0.0
- kotlinx.coroutines 1.3.9 -> 1.4.0
- kotlinLogging 1.7.10 -> 2.0.3
- Fixed
Guild#getVanityUrlthrowing an exception when a guild did not support vanity invites. #104 - Fixed
Embed#fieldsalways returning empty. #105
- Fixed
Rolebehavior#mentionforeveryoneroles. #96 - Fixed NPE being thrown when trying to query data types that were not cached.
- Fixed message content not being sent when uploading a file. #99
- Fixed rest action reasons not encoding properly. #86
- Fixed removed channels not being removed from cache. #84
- Fixed an issue where
Memberswould not considerUserswith the same ID equal. - Removed a dependency on Java 10 introduced in 0.6.5. #78
- Fixed the event flow dropping events under too much pressure. #81
- Fixed the
KordCacheBuilderignoring configuration #82
- Fixed an issue where
LiveMessagewould not filter its event flow. #70 - Fixed an issue where emojis from events would be decoded incorrectly.
- Added a
MemberBehavior#addRoleandMemberBehavior#removeRolevariant which accepts an audit log message.
- Fixed GuildMessageChannelBehavior#bulkdelete incorrectly deleting messages older than 14 days
- Added a new
Fieldbuilder function. #57 - Added
Kord#getChannelOfto request a type of channel.
nameandvaluedefault to empty space.PRESENCES_REPLACEevent will be ignored. #42
- Added
Teamand other properties to ApplicationInfo.
ReactionEmoji.Unicodenow correctly compares on name for equality.
CacheEntitySupplier#getGuildMemberswill no longer query MemberData on each user.- Reduced the number of mappings inside suppliers.
- Fixed type mismatch when comparing guildId in
CacheEntitySupplier#getGuildMembers
Member#kickandGuild#kicknow have an optional reason.KordBuildernow throws a (more) useful exception when building a bot with an invalid token.- The REST module will now use
discord.com/apiinstead of the deprecateddiscordapp.com/api. - Kord now uses
Dispatchers.defaultas the default dispatcher.
- Fixed an issue where Invite events would not fire if the invited user didn't have an avatar.
- Fixed some outdated docs on the
KordBuilder. - Fixed an issue where voice states from guild creates were not getting cached.
- Introduced an experimental REST-only variant of the Kord builder. This will automatically disable gateway and cache related APIs and replace them with a no-op implementation.
- Introduced a no-op
Gatewayimplementation.
- Removed an unneeded REST call when building Kord.
- kotlin 1.3.72 -> 1.4.0
- ktor 1.3.2 -> 1.4.0
- kotlinx.serialization 0.2.0 -> 1.0.0-RC
- kotlinx.coroutines 1.3.7 -> 1.3.9
- Fixed an issue where multiple voice states could be present per user per guild.
- Fixed an issue where presences would be incorrectly deserialized in guild member chunk events.
- Fixes member chunk events not caching presences.
- Fixed an issue with entity flows requested from REST duplicating entities.
- Fixed an issue where getting a channel from a guild would incorrectly throw an exception during the guild id check. (again)
- Fixed an issue where getting a channel from a guild would incorrectly throw an exception during the guild id check.
- Added
BanAddEvent#getBanto get the full ban object. - Re-added
MessageCreateBuilder#allowedMentionsafter removal in 0.5.0.
- Fixed incorrect calculations of denied
Permissions.
- Added
MessageBehavior#publishto publish a message in an announcement channel. - Added
NewsChannelBehavior#followto follow an announcement channel in another text channel.
- Fixed
GuildChannel#getEffectivePermissionsnot correctly denying permissions denied for the user specifically.
- Added
GuildBehavior#getChannel,GuildBehavior#getChannelOfand their nullable variants.
GuildBehavior#unBanhas been deprecated forGuildBehavior#unban.
getGuildMembersreturns the correct limit for both Cache and Rest suppliers.
- Add missing mention property for unicode emojis.
- Re-add
guildIdtoInvitefor compatibility.
- Added
PartialGuildinInvite - Added
GuildBehavior.createEmoji - Added
GuildEmoji.deleteandGuildEmoji.edit
DiscordInvite#targetUseris now correctly nullable.PermissionOverwriteEntity#getGuildOrNulluses the correct supplier method.
Invitenow uses aChannelinstead ofGuildChannel.
mentionproperties forGuildEmojiandReactionEmoji
- Added Gateway Intents, allowing users to filter events send by Discord. #60
- Added
VIEW_GUILD_INSIGHTSpermission #88 - Added
MessageCreateEvent#guildIdto replace the removedMessage#guildId. - Added
MessageCreateEvent#member.
- Removed deprecated API from 0.4.x
- kotlin 1.3.70 -> 1.3.72
- ktor 1.3.1 -> 1.3.2
- kotlinx.coroutines 1.3.4 -> 1.3.7
- kotlin-logging 1.7.8 -> 1.7.10
- Getting entities from a flow of non-cached entities should be considerably faster.
- non-final socket closures use 4900 instead of 1000.
- Added the
EntitySupplyStrategy, entities will now keep a reference to aEntitySupplier(fetched from the strategy) from which they'll be able to fetch other entities (getXmethods). #74 - Added
withStrategy(EntitySupplyStrategy)to change theEntitySupplierof most entities. #74 - Added a
CacheEntitySupplierandRestEntitySuppliersupplier that exclusively operates on Cache and REST respectively, as well as a strategy that prioritizes Cache over REST like previous versions. #74 - Added
getXOrNullvariants to fetching entities that won't explode when trying to get an entity that doesn't exist. #74
- Changed
GuildCreateBuilderto be more inline with recent api changes. #77 coreEvent constructors are no longer internal.Kord#gatewayis now aMasterGateway, exposing all sharded gateways #65coreEvents now expose their shard index as well as theGatewaythey were spawned from. #65DisconnectEventandClosehave been extended with more detailed implementations #65Gatewaynow accepts aPresenceBuilderto configure its original presence. #72- Rest Discord API version can now be configured by setting the
com.gitlab.kordlib.rest.versionsystem property,v6by default. DefaultGatewaynow supports zlib compression and enables it by default.
This release contains breaking changes related to webhooks.
- Added
WebhookBehavior#executeIgnoredwhich does not wait for the message to be processed.
WebhookBehavior#executewill now return aMessage.
- Fixed an issue when deserializing a Webhook would throw an exception.
- Fixed an issue where endpoints returning nullable types would throw an exception.
- Fixed cache not removing messages deleted from a
MessageDeleteBulk.
- Added error codes 10026(Unknown ban), 40002(You need to verify your account in order to perform this action) and
30015(Maximum number of attachments in a message reached (10)) to the
JsonErrorCode. - Added
approximate_member_countapproximate_presence_countto guilds, which will be present when requesting a guild through rest. - Added missing
DmChannel#recipientBehaviors. - Added missing
MessageUpdateEvent#message,MessageUpdateEvent#channel,MessageUpdateEvent#getMessage,MessageUpdateEvent#getChannel. - Added missing
PresenceUpdateEvent#member,PresenceUpdateEvent#guild,PresenceUpdateEvent#getUser,PresenceUpdateEvent#getMember,PresenceUpdateEvent#member,PresenceUpdateEvent#getGuild. - Added
chunk_indexandchunck_countproperties toGuildMembersChunkData. - Added
Invite#targetUserType. - Added
User#flag. - Added
GuildFeature.WelcomeScreenEnabled. - Added
MessageModifyBuilder#allowedMentions. Embedscan now copy their contents over to builders by usingEmbed#apply(EmbedBuilder).- Added
User#premiumType. - Added
GuildPreviewand the ability to get previews for public guilds viaKord#getGuildPreview.
- Fixed
MessageModifyBuilderignoring flags.
- Fixed an issue where
ClientStatuswould only display the desktop status.
- Fixed an issue where presences from guild creates were cached without guild id.
- Fixed REST throwing an exception when parsing an error without code.
- Behaviors have been removed from VoiceState due to lack of guildId.
- Unmatched data structure between VoiceState and its data.
- ISO_INSTANT not being used to format and Instant object.
- Classes implementing
Entitynow correctly implement equals and hashcode based on ids.
- Fix
GuildMessageChannelBehavior#bulkDeletemanually deleting messages younger than 14 days and trying to bulk delete messages older than 14 days, instead of the other way around.
- Fix guild emojis not having their correct id.
- Fix unexpected data fields throwing exceptions when parsing
GatewayEvents. This should now be limited to unknown opcodes only.
ParallelRequestRateLimiterwill no longer try to unlock a mutex twice on a error response
DiscordErrorResponseincorrect serialization
ID collections in modify builders have undergone a breaking critical bug fix.
- Added
JsonErrorCodeandDiscordErrorResponseto map Discord's Json error messages.
- Added
errorfield toKtorRequestExceptionto includeDiscordErrorResponse
- Fixed
permissionOverwritesinTextChannelModifyBuilder,VoiceChannelModifyBuilder,NewsChannelModifyBuilderbeing final. - Fixed
rolesinEmojiModifyBuilderandMemberModifyBuilderbeing final.
- Added Integrations.
- Guilds can now request their own Integrations with
GuildBhehavior#integrations. - Added
preferredLocaleandpublicUpdatesChannelIdtoGuildandGuildModifyBuilder. - Added some utility functions to the
KordCacheBuilder. - Added
GuildDiscoveryDisqualifiedandGuildDiscoveryRequalifiedtoMessageType. #79
KtorRequestHandlerwill now log the body of requests and responses.
- The GuildService now returns the correct type of integration objects.
- Fixed a typo in the
Embed#typeproperty kdocs. - Fixed an issue where paginated flows would emit duplicate items.
Embed#typehas been deprecated. #80LiveNewsChannel,LiveStoreChannelandLiveTextChannelhave been deprecated. Message channels in guilds can change type during their lifetime, which means type can't be guaranteed.LiveGuildMessageChannelhas been introduced as an alternative.
- Fixed an issue where editing a guild category would reset permissions.
- Fixed an issue where editing a guild emoji would reset permissions.
- Fixed an issue where editing a guild member would reset permissions.
- Removed some
Kordfunctions that fetched non 'top-level' entities. Kord is no longer the central source for getting entities and these changes try to reflect that. #74 You should use the new entity suppliers for those instead. #74 KordCachehas been removed, Kord now keeps a reference to a generic cache instead. You can still get similar behavior usingkord.with(EntitySupplyStrategy.cache). #74
- Added
Guild#memberCount. - Added
GuildEmoji#isAvaiable. #84 - Added allowed mentions to message create. #83
MessageChannel#withTypingshould now properly stop when cancelling the coroutine context
- Fixed channels cached in guild create events not having a guild id.
- Fixed
DiscordCreatedInvite#maxUsesserialization typo. - Fixed an issue where editing a guild channel would reset permissions.
- Added
Member#roleBehaviors - You can now add or remove entire
Permissionsto/from thePermissionsBuilder - Added
Member#isOwner - Added
Member#getPermissions - Added
Message.isPinned - Added
GuildChannel#getEffectivePermissions
Message#guildIdandMessage#guildare deprecated due to inconsistent availability.- removed
ReactionEmoji.iddue to compiler issues regarding nullable inline classes, check for Custom type instead.
- Guild emojis update correctly on
GuildEmojisUpdateevent. - Ratelimiters should no longer lock up when throwing an exception during requests.
- Added
MessageBehavior#withTyping.
- usage of
kotlinx.io.inputstreamhas been replaced withjava.io.inputstreamfollowing the internalization of the typealias.
- kotlin 1.3.61 -> 1.3.70
- kotlinx.serialization 0.14.0 -> 0.20.0
- kotlinx.coroutines 1.3.3 -> 1.3.4
- Added
Guild#roleBehaviors.
- Fix incorrect deserialization of mentioned roles in messages.
- Message updates now correctly update mentioned channels.
- Added
GuildBehavior.getRole. - Added missing
Guild.channelIdsandGuild.channelBehaviors.
- Added a
CategoryCreateBuildertoGuildBehavior. #67
- Removed
urlfromEmbedFooterRequest, as it's not an actual field in the Discord API. #66
Kordand itsCachenow implement a common interfaceEntitySupplierto retrieve entities that can be cached. #54mentionedRoleIds,mentionedRoleBehaviors,mentionedUserIds,mentionedUserBehaviorswere added toMessage.- Introduced two implementations for the
RequestRateLimiter:ExclusionRequestRateLimiterandParallelRequestRateLimiter, which will be replacing theExclusionRequestHandlerandParallelRequestHandlerrespectively. #59
- All fields but
nameare now optional inGuildCreateBuilderandGuildCreateRequest. #62 - Removed the
ExclusionRequestHandlerandParallelRequestHandlerand introduced theKtorRequestHandler, which accepts anyRequestRateLimiter. #59 Message#mentionedRolesandMessage#mentionedUsersnow return aFlowof their respective entities instead of aSet<Snwoflake>.StoreChannel#edit,TextChannel#editandNewsChannel#editnow supply their builder as a receiver.- core entity builders were moved from
com.gitlab.kordlib.core.buildertocom.gitlab.kordlib.rest.builderand are now part of the rest module. Snowflakewas moved to the common module from core. #53Kord#getRegions()was deprecated forKord#regions.Kord#getUsers()was deprecated forcache#users.- various Snowflake argument names have been changed in
Kordto better reflect the entity they represent. - A reified
getChannelhas been added toEntitySupplierthat will try to cast the channel to the given type. CategoryModifyBuilder#permissionsis now aval.ChannelPermissionModifyBuilderis now a properAuditRequestBuilder.
- fixed typo
CategoryModifyBuilder#positon->CategoryModifyBuilder#position
-
Fixed
guild-idbeing wrongly deserialized asguildIdinDiscordAddedGuildMember. -
Fixed an issue where disconnecting from the
DefaultGatewaywithout closing the connection (i.e. dropping your internet connection) would indefinitely suspend theDefaultGateway, making it unusable.
- Added
InviteCreate,InviteDeleteanMessageReactionRemoveEmojievents. #61 - Added
deleteAllReactionsForEmojito ChannelService. #61
- Fixed an issue where
DiscordInvitewas wrongly representinginviteras aStringinstead of aDiscordUser.
- ktor 1.3.0-rc2 -> 1.3.0
- Fixed an issue with Kord ignoring cached entries that relied on querying data by id. again.
This version contains an upgrade of ktor that brings breaking changes, be sure to check out ktor's changelog if you were interacting with ktor or the rest module directly.
This change also comes with the removal of kotlinx.io, which was a transitive dependency. If your code relied on kotlinx.io consider manually including the dependency or migrating away from it entirely.
Kord#getGuilds()has been replaced with the non-suspendingKord#guilds.@KordBuilderhas been renamed to@KordDsl.KordClientBuilderhas been renamed toKordBuilder.fileNamehas been renamed tofilename.DefaultGateway's constructor accepts a singleDefaultGatewayDatainstead of multiple properties.DefaultGatewayis now able to rate limit identify attempts and accepts aRateLimiterthat can be shared between multiple gateways. This will be done by default for Kord clients now.KordClientBuilder'sgatewayfunction has been renamed togateways. It now gives a list of shards and requests a list of gateways, this change allows you to more easily share configuration between gateways.- Emojis now have nullable names, this only appears when interacting with guild emojis that have been deleted.
- Rest, Gateway and Common entities have gained a
Discordprefix to reduce name collisions with Core. ParallalRequestHandlerhas been upgraded to stable.featuresinGuildsare now represented as enum values instead of Strings.
- Added
LiveEntityand its implementations to Core. These are self-updating entities that contain a filtered event stream, only emitting related events. - Added
targetUserandtargetUserTypeto invite creation. #47 - Added a
rules channel,SystemChannelFlagsanddiscoverySplashtoGuild. #48 - Added
premium sincetoMember. #45 - Added
invitertoInvite. #44
- Ending the process while enabling the shutdownHook and without logging in causes UninitializedPropertyAccessException #50
- gradle 5.4 -> 6.0.1
- kotlin -> 1.3.60 -> 1.3.61
- kotlinx.serialization 0.13.0 -> 0.14.0
- ktor 1.2.5 -> 1.3.0-rc2
- kotlinx.coroutines 1.3.2 -> 1.3.3
- kotlin-logging 1.7.6 -> 1.7.8
useshas been added as a nullable property toInviteResponse.- Added
mentionedChannel-related fields toMessage. - Added
KordClientBuilder#enableShutdownHook, which enables a shutdownHook that automatically closes the gateway on process exit.
User.Avatar#getUrlno longer returnsnullwhen requesting a static version of a user's animated avatar.
- Fixed an issue where
PartialEmojiwould not deserialize with a missingid. - Fixed an issue where subscribing to the
eventsFlow while kord was already logged in caused it to emit old events. - Fixed an issue where
DefaultGatewaywould stop reading payloads after throwing an Exception while parsing json.
Enums now have an Unknown value to mitigate the effects of unannounced discord changes moving forward. #39
nicknameMentionhas been added toMemberBehavior
Flowextension now support suspending functions
MessageCreateBuilder#addFileno longer ignores files added.GuildMembersChunkData#presenceshas become nullable.RequestGuildMembers#queryis no longer nullable.- Fixed an issue with Kord ignoring cached entries that relied on querying data by id.
User#discriminatorandUser#tagwill now properly format discriminators with leading spaces.
- kotlin-logging: 1.7.6
- kotlinx.coroutines: 1.3.2
- kotlinx.serialization 0.13.0
- ktor 1.2.5
A new RequestHandler, the ParallalRequestHandler has been introduced as a preview feature. Compared to the
ExclusionRequestHandler, this handler offers increased parallelism by allowing requests with different identifiers
to be handled in parallel. The drawback is that this opens a small window for exceeding the global rate limit.
Gateway now has a ping field, containing the duration between the latest heartbeat and heartbeat ack.
GuildModifyRequest now has an optional banner field, which can contain a base64 16:9 png/jpeg image for the guild banner (when the server has BANNER feature).
Added presences and userIds to the RequestGuildMembers class and the equivalents to GuildMembersChunkData.
Invite#revoked has been removed since it never existed.
filename is now correctly deserialized for Attachment objects.
Gateway now has a ping field, containing the duration between the latest heartbeat and heartbeat ack.
This is the first maintenance update for Kord 0.2. With it, we have started hosting Kord on bintray, check our README on what to include to get the newest version.
- Added
Flow<T: Any>.firstOrNullandFlow<T: Any>.anyas their behavior is often needed when interacting with flows of members, channels, etc (and really, they should've been part of the coroutines api). - Added
isSelfSteamingtoVoiceState, indicating when a user is streaming using "Go Live".
KordClientBuildernow allows you to pass a customCoroutineDispatcher.- Since most suspending calls in Kord will be IO related,
Kordnow usesDispatchers.IOas itsCoroutineDispatcher. StoreChannelcan no longer be used to read or send messages. discord api.NewsChannelandStoreChannelhave been upgraded to the stable api and are no longer in preview.ExclusionRequestHandlernow takes request buckets into consideration.
This is the first maintenance update for Kord 0.2. With it, we have started hosting Kord on bintray, check our README on what to include to get the newest version.
- Added
Flow<T: Any>.firstOrNullandFlow<T: Any>.anyas their behavior is often needed when interacting with flows of members, channels, etc (and really, they should've been part of the coroutines api).
KordClientBuildernow allows you to pass a customCoroutineDispatcher.- Since most suspending calls in Kord will be IO related,
Kordnow usesDispatchers.IOas itsCoroutineDispatcher. StoreChannelcan no longer be used to read or send messages. discord api.NewsChannelandStoreChannelhave been upgraded to the stable api and are no longer in preview.
-
Added the
coremodule, a wrapper aroundgatewayandrestthat introduces caching using ourcachemodule. As with all our api, it's not stable yet and we will probably continue to introduce breaking changes to improve the general look and feel and fix design flaws. -
Along with
corecomes the concept of entityBehaviour, which are stripped down discord entities (mostly only retaining their id) that are able to interact with rest on a higher level than therestmodule exposes. This is specifically geared towards users who have disabled caching, but its use should be preferred towards anyone who doesn't want to risk increased cache hits or rest calls. -
Gatewaysnow come with adetachfunction, which will allow implementations to (permanently) shut down and release all resources.DefaultGatewaydidn't require this, but other implementations that use e.g. thread pools can now shut those down in here. -
DefaultGatewaynow comes with a builder dsl that has sane defaults. -
ExclusionHandlernow comes with a secondary constructor that accepts a token.
- Kotlin's experimental
Durationhas replacedLongtyped arguments that represented durations in milliseconds. The previous functions/constructors have been marked with@Deprecatedand should be replaced with the new ones.
- Numerous nullability fixes and other inconsistencies with/because of the discord api.
- Added the
restmodule, a direct mapping of Discord's REST API with rate limiting - Added a common module, containing shared code between rest and gateway
- Preview and Experimental annotations
- Moved shared json classes to common
- Removed Snowflake from common and gateway
- guildId field has been renamed to id in GuildIntegrations
- The color field in Embed is now optional
- The timestamp filed in Embed is now optional
- The All Permission now correctly represents all permissions
- Missing fields have been added to GuildIntegrations
- DefaultGateway should now correctly reconnect on reconnect events
- DefaultGateway should no longer delay on user invoked close