Repository navigation
Releases
v0.20.0
What's Changed
Fixed
- fix(discord): update to correct subscription status enum values by @kshitijanurag in #552
- fix(voice): voice open without ChannelID by @sealbro in #551
- fix(voice): improve voice connection handling and state management by @topi314 in #537
- fix(guild): singular => plural tag by @vmphase in #564
- fix(oauth2): encode permissions as bitfield in authorization url by @merlinfuchs in #571
- fix(voice): close the conn when reopening after a close code fails by @thomas-vilte in #578
- fix(voice): release SSRC lock before callbacks by @jovolopez in #582
- fix: MemberCount being overwritten on guild update by @topi314 in #585
- fix(voice): cap reconnect backoff at maximumConnectDelay by @thomas-vilte in #586
- fix(voice): recover connections with fresh sessions by @kota113 in #587
- fix(voice): detect RTP padding with the correct bit and strip it after decryption by @phpboyscout in #594
- fix(voice): wait for both voice gateway events by @jovolopez in #580
- fix(interaction): update ResolvedChannel schema by @vmphase in #565
- fix(cdn_enpoints): avatar => banner for MemberBanner by @vmphase in #606
- fix(audit-log): correct name for VoiceChannelStatusCreate (192) by @vmphase in #607
- fix(webhook): add missing fields, edit nullable fields by @vmphase in #563
- fix(AudioSender): Close opus provider by @AlexGuan123 in #612
- fix(channel_create): default_auto(_archive_days) => (_archive_duration) by @vmphase in #620
- fix(cache): evict threads of deleted channels by @vmphase in #624
- fix(cache): apply the member overwrite after role overwrites by @yokkkoso in #630
- fix(member): allow disconnecting a member from voice with MemberUpdate by @yokkkoso in #629
- fix(voice): only dispatch GuildVoiceMove when the channel changes by @yokkkoso in #628
- fix(gateway): populate member guild id in voice state update by @yokkkoso in #627
- fix(voice): prevent gateway lock order deadlock by @kota113 in #588
- fix(gateway): stop delivering buffered frames after the transport is closed by @topi314 in #634
- fix(channel): omit unset forum and media slowmode by @fishonxd in #636
- fix(rest): use /commands/ path for single command endpoints by @vmphase in #641
- fix(rest): send with_user_count when fetching scheduled events by @vmphase in #642
- fix(voice): don't spin the audio receiver while DAVE isn't ready by @thomas-vilte in #639
- fix: log and ignore decoding errors from the gateway by @topi314 in #645
- fix: decode unknown channel, overwrite, webhook, integration and command types instead of failing by @merlinfuchs in #644
- fix: close the DAVE session when the conn is discarded by @thomas-vilte in #568
- fix: use shared gateway already connected error by @thomas-vilte in #569
- fix: don't materialise every unready guild id to test emptiness by @merlinfuchs in #619
- fix: don't serialize every gateway event behind one global mutex by @merlinfuchs in #618
- fix: don't tear down the decoder the read loop is still using by @merlinfuchs in #617
Added
- feat: add
ChannelTypefield toEventMe 8000 ssageCreateevent by @kshitijanurag in #558 - feat(JSONErrorCode): add error code
20015,50167, and340015by @kshitijanurag in #557 - feat(JSONErrorCode): add error code
40009by @kshitijanurag in #576 - feat(ClientStatus): add VR client status by @kshitijanurag in #574
- feat(MessageActivityType): add stream request message activity type by @kshitijanurag in #575
- feat(Application): add
FlagsNewfield by @kshitijanurag in #577 - feat: add file type filtering for attachment options and file uploads by @vmphase in #572
- feat: attachment editing by @kshitijanurag in #567
- feat(thread): add missing thread fields (flags, member, applied_tags, rate_limit_per_user) by @vmphase in #591
- feat(invite): add missing fields by @vmphase in #605
- feat(guild): add GuildFeaturePruneRequiresAdmin by @vmphase in #590
- feat: implement channel obfuscation by @vmphase in #562
- feat: add support for spoiler channels by @vmphase in #615
- feat(JSONErrorCode): add error codes
160009and160010by @kshitijanurag in #621 - feat(embed): add support for component embeds by @vmphase in #622
- feat(audit-log): add channel and role position update events by @fishonxd in #625
- feat(invites): add single and bulk invite target user endpoints by @vmphase in #623
- feat(handler): propagate event context to interaction REST calls by default by @amazingakai in #637
- feat: content scanning flags by @kshitijanurag in #640
- feat(rest): add guild and channel permission endpoints by @vmphase in #643
- feat: voice channel status by @kshitijanurag in #554
- feat: update DAVE session ready handling and dependencies by @topi314 in #561
Other
- perf(log): skip building debug log bodies when debug is off by @merlinfuchs in #584
- deprecate(connection): drop deprecated ConnectionTypeBattleNet by @vmphase in #614
- deprecate(message): add deprecation comment to Message.Interaction by @vmphase in #616
New Contributors
- @jurienhamaker made their first contribution in #553
- @vmphase made their first contribution in #564
- @thomas-vilte made their first contribution in #568
- @jovolopez made their first contribution in #582
- @kota113 made their first contribution in #587
- @phpboyscout made their first contribution in #594
- @schphe made their first contribution in #611
- @AlexGuan123 made their first contribution in #612
- @fishonxd made their first contribution in #625
- @amazingakai made their first contribution in #637
Full Changelog: v0.19.6...v0.20.0
v0.19.6
v0.19.5
What's Changed
- feat: add new fields and flags by @kshitijanurag in #548
- fix(voice): Conn.Close blocking forever by @shi-gg in #547
- feat(discord): add missing
placeholderonAttachmentby @Commandtechno in #549
New Contributors
- @shi-gg made their first contribution in #547
- @Commandtechno made their first contribution in #549
Full Changelog: v0.19.4...v0.19.5
v0.19.4
What's Changed
- feat(discord): add missing
CollectiblesonMemberstructure by @kshitijanurag in #535 - feat(rest): add community invites and provisional accounts error codes by @kshitijanurag in #539
- feat(rest): add JSON error code
160014by @kshitijanurag in #540 - fix(discord): remove unsupported negated
MessageSearchEmbedTypeby @kshitijanurag in #541 - fix: apply DefaultAllowedMentions to interaction responses sent via Respond by @yokkkoso in #542
- feat(OAuth2Scope): add
OAuth2ScopeIdentifyPremiumscope by @kshitijanurag in #544 - feat: add DELETE role connection endpoint by @sebm253 in #545
- feat: add missing fields to EmbedResource by @MatthewSH in #546
New Contributors
- @MatthewSH made their first contribution in #546
Full Changelog: v0.19.3...v0.19.4
v0.19.3
What's Changed
- chore: use separate struct for Invite roles by @yokkkoso in #522
- remove null-padded from udp conn address by @iishabakaev in #521
- fix(voice): gateway bail on non-retriable close codes by @MohmmedAshraf in #523
- fix(voice): add missing voice gateway close event codes by @kshitijanurag in #524
- feat(message): shared client themes by @kshitijanurag in #526
- feat: add
BaseThemeTypeUnsettoBaseThemeTypeenum by @kshitijanurag in #527 - feat: guild messages search by @kshitijanurag in #528
- feat(discord): add
FileFormatWebPsupport to role icon CDN endpoint by @kshitijanurag in #531 - feat(discord): add
LocaleSpanishLATAMby @kshitijanurag in #532 - feat(rest): add JSON error code
50278by @kshitijanurag in #530 - refactor: rename duplicate JSON error code by @kshitijanurag in #533
New Contributors
- @iishabakaev made their first contribution in #521
- @MohmmedAshraf made their first contribution in #523
- @kshitijanurag made their first contribution in #524
Full Changelog: v0.19.2...v0.19.3
v0.19.2
What's Changed
- fix(component): update field name from 'value' to 'values' in CheckboxGroupComponent by @ikafly144 in #517
Full Changelog: v0.19.1...v0.19.2
v0.19.1
v0.19.0
v0.19.0
What's Changed
Note
This release includes support DAVE (E2EE voice) which will be required for all voice connections starting on March 1st 2026.
If you need help or found issues with our implementation please reach out to us via GitHub issues/discussions or our support server (see README.md for invite link).
For a basic example see: https://github.com/disgoorg/disgo/blob/v0.19.0/_examples/voice/main.go
Warning
This release includes breaking changes. Please review the Breaking Changes section below for details.
If you need help migrating please reach out to us via GitHub discussions or our support server (see README.md for invite link).
Added
- Added support for AVIF emojis by @sebm253 in #456
- Added role gradient colors by @sebm253 in #453
- Added guest invites by @sebm253 in #278
- Added guild tags by @sebm253 in #353
- Added ComponentEmoji constructors and builder methods by @DiabolusGX in #459
- Added ResumeShard method and ShardState struct to manage shard session and sequence by @topi314 in #460
- Added status check before sending to gateway by @topi314 in #462
- Added support for new
RATE_LIMITgateway event by @davfsa in #464 - Added ability to pass resume url for proper resume by @davfsa in #465
- Added support for selects in modals by @topi314 in #158
- Added new fields to CurrentMemberUpdate by @sebm253 in #474
- Added support for additional select menu components in m 10000 odals by @topi314 in #469
- Added support for new voice encryption modes by @topi314 in #431
- Added transport compression by @davfsa in #476
- Added missing opts for cache config by @readeem in #480
- Added FileUploadComponent for file uploads in modals by @topi314 in #481
- Added ResolvedData from ModalSubmitInteractionData to UnmarshalJSON by @ikafly144 in #482
- Added ability to pass custom CloseHandler to shard manager by @topi314 in #487
- Added customizable CloseHandler to gateway configuration by @topi314 in #488
- Added all known REST error codes by @merlinfuchs in #496
- Added community invites by @yokkkoso in #509
- Added DAVE by @davfsa & @topi314 in #507
- Added new pin endpoints by @sebm253 in #457
Fixed
- Fixed
Members.UpdateCurrentMemberto returndiscord.Memberby @norio-nomura in #458 - Fixed guild cache logic for unavailable states by @topi314 in #461
- Fixed ensure open returns on invalid session by @topi314 in #466
- Fixed identify rate limiting for gateway sharding by @topi314 in #467
- Fixed multiple gateway logic bugfixes by @davfsa in #468
- Fixed logical condition in ShardByGuildID method by @Qreepex in #470
- Fixed shard ID calculation during shard splitting by @topi314 in #472
- Fixed small component issues by @topi314 in #475
- Fixed voice example for DCA0 audio by @cactysman in #477
- Fixed close websocket connection before inflators by @davfsa in #485
- Fixed data race when opening shards by @apricotbucket28 in #484
- Fixed to only use JoinSnowflakes when array isn't empty by @merlinfuchs in #493
- Fixed to not omit zero attachment id by @merlinfuchs in #495
- Fixed to always immediately send initial heartbeat by @davfsa in #499
- Fixed to prevent immediately zombieing by @davfsa in #501
- Fixed gateway ratelimiter implementation by @davfsa in #500
- Fixed nil pointer dereference in flags checks by @davfsa in #504
- Fixed nil pointer dereference when failing to create client in voice example by @davfsa in #505
- Fixed Recipients not being public on dm channel by @Qreepex in #486
- Fixed before and after in GetEntitlementsParams not being snowflakes by @merlinfuchs in #492
Refactored
- Refactored connection management and simplified handleMessage function by @topi314 in #473
- Refactored to remove builders by @topi314 in #515
- Refactored DefaultAllowedMentions configuration by @TheKodeToad in #483
Removed
- Removed
testifydependency by @elisiei in #478 - Removed redundant map from route hashes by @merlinfuchs in #489
Breaking Changes
- Added support for DAVE (E2EE voice) via godave. Discord will require DAVE for all voice connections starting on March 1st 2026.
See: https://docs.discord.com/developers/change-log#deprecating-non-e2ee-voice-calls bot.Clientis now a struct instead of an interface.
Some methods have been converted to struct fields instead.- Removed MessageCreateBuilder, MessageUpdateBuilder, ModalCreateBuilder, WebhookMessageCreateBuilder & WebhookMessageUpdateBuilder. Use the methods on their base structs instead.
- Removed
discord.XCommandCreate,discord.XCommandUpdate,DMPermissionfield. Use theContextsfield instead. - Removed
discord.InteractionChannelIDmethod. UseChannelmethod instead. - Removed
discord.XInteractionCreatePremiumRequiredmethod. UseCreateMessageetc. withdiscord.ButtonStylePremiuminstead. - Removed
discord.IntentGuildEmojisAndStickersintent. Usediscord.IntentGuildExpressionsinstead. - Upgraded
github.com/disgoorg/jsontogithub.com/disgoorg/json/v2and addedgithub.com/disgoorg/omitfor nullable & optional handling. - Removed non context methods on
bot.MemberChunkingManager& renamed to removeCtxsuffix. Use the context versions instead. - Replaced cache
ForEach(func(entity T))withAll() iter.Seq[T]. gateway.Gatewat.Opennow blocks until the ready event.- Removed guild creation API as discord dropped support for it.
- Updated
rest.Errorto be returned as a pointer*rest.Errorinstead of a valuerest.Error. - Added support for components v2 which includes breaking changes to component interfaces.
- Removed global
discord.DefaultAllowedMentionsconfiguration. Userest.WithDefaultAllowedMentionsinstead.
New Contributors
- @norio-nomura made their first contribution in #458
- @DiabolusGX made their first contribution in #459
- @elisiei made their first contribution in #478
- @cactysman made their first contribution in #477
- @readeem made their first contribution in #480
- @merlinfuchs made their first contribution in #489
- @TheKodeToad made their first contribution in #483
Full Changelog: v0.18.16...v0.19.0
v0.19.0-rc.15
v0.19.0-rc.14
What's Changed
- Fixed nil pointer dereference in flags checks by @davfsa in #504
- Filter event recover stacktraces by @topi314 in 963757c
Full Changelog: v0.19.0-rc.13...v0.19.0-rc.14