Skip to content

Releases: Aiko-IT-Systems/DisCatSharp

v10.7.1-nightly-013

21 Apr 06:53
d3d6053

Choose a tag to compare

v10.7.1-nightly-013 Pre-release
Pre-release

Added the missing ChannelInfo event type to the automatic event handler registration

Full Changelog: v10.7.1-nightly-012...v10.7.1-nightly-013

v10.7.1-nightly-012

21 Apr 06:49
32eb07d

Choose a tag to compare

v10.7.1-nightly-012 Pre-release
Pre-release

New

  • Added support for requesting and tracking voice channel start times!
    • New event: ChannelInfo
    • New API: RequestChannelInfoAsync / RequestAndWaitForChannelInfoAsync
    • New entity: DiscordChannelInfo (includes VoiceStartTime and Status)
    • DiscordChannel now exposes VoiceStartTime and Status properties

Internal

  • Cleaned up cache mutation logic for soundboard sounds, channel info, and voice state events (no more double-writes or redundant lookups).

Full Changelog: v10.7.1-nightly-011...v10.7.1-nightly-012

v10.7.1-nightly-011

20 Apr 06:30
a8cf6d7

Choose a tag to compare

v10.7.1-nightly-011 Pre-release
Pre-release
  • Fixed an issue for oauth client calls where we used an outdated method to aquire oauth tokens (nightly-009)
  • Followup regression fix for oauth client calls (nightly-010)
  • This release makes interaction response calls bypass the rest queue to ensure an instant response way

Full Changelog: v10.7.1-nightly-008...v10.7.1-nightly-011

v10.7.1-nightly-008

14 Apr 03:51
4566150

Choose a tag to compare

v10.7.1-nightly-008 Pre-release
Pre-release

Bug fix for users running their bot on canary v10.
It seems that discord nulled a deprecated field now which breaks when u start the bot fresh (reconnects weren't affected so far).
This now condionally skips that field.

We marked it as deprecated already long ago, but internally still relied on it.

What's Changed

  • chore(deps): update dependency sentry to 6.3.1 by @renovate[bot] in #830
  • chore(deps): update dependency microsoft.net.test.sdk to 18.4.0 by @renovate[bot] in #829

Full Changelog: v10.7.1-nightly-005...v10.7.1-nightly-008

v10.7.1-nightly-005

03 Apr 01:50
afdacfe

Choose a tag to compare

v10.7.1-nightly-005 Pre-release
Pre-release

Regression fix of https://github.com/Aiko-IT-Systems/DisCatSharp/releases/tag/v10.7.1-nightly-004

Fixes some internal issues where cache wasn't correctly populated / referenced

Full Changelog: v10.7.1-nightly-004...v10.7.1-nightly-005

v10.7.1-nightly-004

02 Apr 20:53
bf638a0

Choose a tag to compare

v10.7.1-nightly-004 Pre-release
Pre-release

✨ Features

  • Nested configuration layoutDiscordConfiguration properties are now grouped into Api, Gateway, Rest, Cache, Logging, Diagnostics, and Telemetry sub-objects. Old flat properties remain as [Deprecated] forwards. (#816)
  • DCS1201 analyzer + code fix — detects deprecated flat config properties with single-property and batch initializer rewrites. (68c7ba40, bd5a4cee)
  • Ordered gateway dispatch — per-shard FIFO dispatch queue with configurable DispatchMode (ConcurrentHandlers / SequentialHandlers) and bounded capacity. (#816)
  • Internal extension events — AppCommands, CommandsNext, Interactivity, Lavalink, and Voice now hook deterministic internal events instead of racing on public ones. (#816)
  • Presence fast-pathPRESENCE_UPDATE routed to a dedicated channel to avoid starving the main dispatch queue under high volume. (#819)
  • REST bucket-owned workers — each rate-limit bucket gets its own BucketWorker with FIFO queue, independent concurrency, and automatic idle cleanup. (e4bb5cf9)
  • Bucket remap & recovery — atomic hash remapping when Discord returns a different bucket, worker migration on remap, and automatic recovery on faulted workers. (084aeebc)
  • Queue depth limitsMaxQueueDepthPerBucket caps queued requests per bucket; exceeded → RestQueueFullException. (e4bb5cf9)
  • Circuit breaker — per-bucket consecutive-failure tracking with configurable threshold, cooldown, and half-open probing. (084aeebc)
  • REST diagnostics APIIRestDiagnostics exposes active worker count, total queued requests, and per-bucket snapshots. (e4bb5cf9)
  • Emergency cancelCancelAllPendingRequests() drains all bucket queues immediately. (e4bb5cf9)
  • Timeout surface finalization — REST and gateway timeouts consolidated into RestConfiguration, RestAdvancedConfiguration, and GatewayAdvancedConfiguration with validation. (#824)
  • CancellationToken propagation — threaded through the full REST call chain from public API → DiscordApiClientRestClientBucketWorker. (#825)
  • Async disposalDiscordClient, DiscordShardedClient, DiscordOAuth2Client, and DiscordWebhookClient implement IAsyncDisposable. Sync Dispose() bridges to DisposeAsync() for backward compat. (#827)
  • DCS1301 / DCS1302 analyzers — warn on sync using and .Dispose() on DisCatSharp client types, with auto code fixes. (#827)

🐛 Bug Fixes

  • Fix Lavalink startup race where a very fast Ready frame could be missed during session resume. (e5b5a12c)
  • Fix gateway crash when Discord sends heartbeat request with d: null. (46545ca4)
  • Fix circuit breaker cooldown not refreshing after half-open probe failures, which could disable breaking during sustained outages. (81dd5fb3)
  • Fix presence channel TryWrite silently dropping events without logging during shutdown. (81dd5fb3)
  • Fix misleading "wrong shard" log message in ApplicationCommands. (a6bca006)
  • Fix comma/newline formatting in DCS1201 initializer code fixes. (36a3df0f)

📖 Documentation

📦 Analyzer

DisCatSharp.Analyzer 1.0.6 released alongside this PR.

Rule Severity Description
DCS1103 Warning Removed DiscordClient.Presences property usage
DCS1201 Warning Deprecated flat config properties → nested layout
DCS1301 Warning Sync usingawait using on client types
DCS1302 Warning .Dispose()await .DisposeAsync() on client types

⚠️ Breaking Changes

  • DiscordClient.Presences removed — use per-guild DiscordGuild.Presences or cache queries instead.
  • 36 root DiscordConfiguration properties deprecated — still functional but emit DCS1201 warnings. Will be removed in a future release.

What's Changed

  • fix(components): auto-correct min_values to 1 when select is required by @Lulalaby in #812
  • chore(deps): update dependency discatsharp.analyzer to 1.0.3 by @renovate[bot] in #813
  • chore(deps): update dependency sentry to 6.3.0 by @renovate[bot] in #815
  • chore(deps): update getsentry/action-release action to v3.6.0 by @renovate[bot] in #818
  • Fix for Static field written by instance method by @Lulalaby in #822
  • Sodium: lazy AesGcm init, drop volatile, null-check guards, doc fix by @Copilot in #823
  • feat: bring the core follow-up work to main by @Lulalaby in #828

Full Changelog: v10.7.1-nightly-003...v10.7.1-nightly-004

v10.7.1-nightly-003

29 Mar 19:23
ca9a7e8

Choose a tag to compare

v10.7.1-nightly-003 Pre-release
Pre-release

DisCatSharp v10.7.1-nightly-003

Third nightly, and this one is the big one :3

A massive reliability and correctness pass across gateway, REST, interactivity, application commands, entities, and more. Also a breaking rename on the ban API — install DisCatSharp.Analyzer 1.0.3 and it will fix named-argument call sites for you automatically.

Note: The Sentry / telemetry rework already shipped in nightly-002. Everything else below is new in nightly-003.

Gateway reliability

  • fixed heartbeat counter reset (was a no-op before — missed beats could silently accumulate)
  • prevented task leaks from zombie heartbeat loops on reconnect
  • synchronized session state across reconnects to prevent stale reads
  • guarded all GuildsInternal indexer accesses that could NRE on cache miss
  • null-guarded socket lock init and guild_stickers_update on uncached guild
  • thread-safe ReadyGuildIds tracking

REST

  • capped retry_after to prevent runaway backoff
  • cleaned up request linearization and response processing
  • fixed TaskScheduler usage in async continuations

Interactivity

28 bug fixes across thread-safety, resource leaks, and crashes:

  • ComponentCollectRequest.Collected is now properly initialized (was NRE before)
  • ComponentPaginator uses ConcurrentDictionary for thread-safe request tracking
  • IPaginator now extends IDisposable
  • InteractivityExtension properly disposes its internal components
  • GetCancellationToken no longer leaks CancellationTokenSource instances

Application commands

  • fixed equality checks — localizations now compared by value, not reference
  • fixed thread-safety on shared static collections
  • fixed shard ownership check order in interaction dedup
  • fixed string choice comparison ("01" and "1" are no longer treated as equal)
  • fixed command matching to use both name and type (not just name)

Entities & cache

  • added guild collectibles to DiscordMember
  • fixed stale cache in GUILD_MEMBER_UPDATE
  • audited and fixed NullValueHandling inconsistencies across REST payloads

Ban API ⚠️

deleteMessageDays has been renamed to deleteMessageSeconds on BanAsync and BanMemberAsync to match what the Discord API actually expects.
Install DisCatSharp.Analyzer 1.0.3DCS1102 will detect and fix named-argument call sites automatically.

Configuration

  • ShardId / ShardCount now validated in ConnectAsync
  • LargeThreshold is now clamped to the Discord-allowed range (50–250)
  • Validate() moved from constructor to ConnectAsync so DI/hosting setup still works

Sharding

  • sharding rework part 1: session and shard lifecycle improvements

Sentry / telemetry (already in nightly-002)

  • full telemetry rework with cleaner abstraction
  • 429 responses no longer reported
  • duplicate reports deduplicated

Misc fixes

  • fixed version check crash when the latest GitHub release is a pre-release tag
  • null-guard for guild_stickers_update on uncached guild
  • removed duplicate invite client assignment

What's Changed

  • fix: sharding rework part 1 by @Lulalaby in #803
  • refactor: remove duplicate invite Discord client assignment by @sentry[bot] in #805
  • feat: add guild collectibles to members and fix stale cache in GUILD_MEMBER_UPDATE by @sentry[bot] in #807
  • refactor: rework built-in Sentry telemetry and diagnostics by @Lulalaby in #804
  • fix: ApplicationCommands equality, thread-safety, and validation audit by @Copilot in #810
  • fix: address 28 interactivity audit findings (thread-safety, resource leaks, crashes) by @Copilot in #809
  • fix(core): core library audit fixes by @Lulalaby in #811

New Contributors

Full Changelog: v10.7.1-nightly-001...v10.7.1-nightly-003

v10.7.1-nightly-001

26 Mar 19:32
56f3813

Choose a tag to compare

v10.7.1-nightly-001 Pre-release
Pre-release

DisCatSharp v10.7.1-nightly-001

First nightly after v10.7.0 is here :3

This release is mostly focused on parity updates, cache/internal reliability fixes, and a bunch of follow-up
cleanup after the big 10.7.0 release.

Highlights

Presence caching overhaul

A larger internal rework landed for presence caching and related gateway state handling.

This improves correctness around cached presence data, fixes several long-standing cache / mapping issues, and adds
more regression coverage around gateway cache behavior moving forward.

Discord parity updates

More Discord-side payloads, fields, and enums were synced up.

This includes follow-up work around:

  • store-related payloads
  • entitlement fields
  • SKU / application fields
  • guild powerup / applied boost payloads
  • audit log follow-ups
  • automod follow-ups
  • message type parity
  • OAuth scope parity

Application commands

Application-command checks-failed handling was cleaned up further.

This includes:

  • dedicated SlashCommandChecksFailed and ContextMenuChecksFailed events
  • modernized checks-failed flow using those events directly
  • follow-up fixes around checks-failed behavior and execution logging

Fixes

This nightly also includes a bunch of fixes and cleanup:

  • fixed incorrect interaction response posting / handler behavior
  • fixed duplicate application-command execution logging
  • fixed soundboard cache refresh / list follow-up issues
  • fixed additional gateway / store dispatch follow-up issues
  • fixed a Lavalink regression when switching the bot's voice channel
  • stabilized experimental autocomplete interaction value handling

Framework support

  • removed .NET 8 support
  • aligned packages with the current target framework matrix
  • refreshed related native/build/package setup along the way

Other

A few documentation and article updates also landed alongside these changes.

What's Changed

  • feat: sync guild powerup / applied boost payloads by @Lulalaby in #794
  • fix soundboard sounds cache/list follow-up by @Lulalaby in #795
  • Fix surfaced entitlement and application fields by @Lulalaby in #796
  • fix!: use checks-failed events for app commands by @Lulalaby in #798
  • chore(deps): update nuget packages to 10.0.51 by @renovate[bot] in #799
  • chore(deps): update dependency discatsharp.analyzer to 1.0.1 by @renovate[bot] in #801

Full Changelog: v10.7.0...v10.7.1-nightly-001

v10.7.0

20 Mar 17:25
2b640cb

Choose a tag to compare

DisCatSharp v10.7.0

Warning

I am not feeling well enough to continue the changelog at this time.
Please refer for all changes to #changelogs in our Discord Server and the GitHub commit history.
I am really sorry. I will update this as soon as I can.

This release is a pretty big one.

It introduces a lot of new features, a full voice rewrite, and a ton of improvements across the board.
Also yes, I finally finished the audit log rewrite.


✨ Highlights

  • Full support for Components V2
  • New voice system (DisCatSharp.Voice) with DAVE (E2EE) support
  • Support for .NET 10 & .NET 11
  • AuditLog completely rewritten
  • Built-in statistics support
  • Lavalink 4.2.0 support (including LavaLyrics)

🔊 Voice Rewrite

VoiceNext is gone.

It has been replaced with:

  • DisCatSharp.Voice
  • DisCatSharp.Voice.Natives

This brings:

  • Proper voice send/receive
  • DAVE protocol support
  • Better reconnect + diagnostics

🧠 New Features

  • Invite target user system (allowlists, CSV support, job tracking)
  • Message search + jump link fetching
  • Components V2 + improved interactivity
  • New modal components (checkboxes, radio groups, etc.)
  • Scheduled event exceptions
  • Guild utilities (member counts, hierarchy helpers)
  • Activity + social layer support

🛠️ Improvements

  • Major stability improvements (gateway, interactivity, voice)
  • Improved pagination behavior
  • Better logging & debugging controls
  • OAuth2 improvements

🧨 Breaking Changes

  • MediaTypeContentType
  • URL fields now use DiscordUri
  • Removed dmPermission (use allowedContexts)
  • Lavalink rename: RemoveQueueRemoveFromQueue
  • VoiceNext removed entirely
  • Some namespace changes in Interactivity

🧾 Notes

This release has been built up over many nightlies and includes a lot of fixes and smaller improvements that are not all listed here.

If you encounter issues, please report them.

What's Changed

  • feat: Components V2 (prev: UI Kit) by @Lulalaby in #601
  • chore(deps): update actions/setup-dotnet action to v4.3.0 by @renovate[bot] in #630
  • chore(deps): update sentry-dotnet monorepo to 5.1.0 by @renovate[bot] in #633
  • chore(deps): update getsentry/action-release action to v1.10.1 by @renovate[bot] in #635
  • chore(deps): update getsentry/action-release action to v1.10.2 by @renovate[bot] in #637
  • chore(deps): update dependency xunit.runner.visualstudio to 3.0.2 by @renovate[bot] in #636
  • [Part 1] Some improvements made during working on Hatsune Miku by @Lulalaby in #632
  • chore(deps): update getsentry/action-release action to v1.10.3 by @renovate[bot] in #639
  • chore(deps): update dependency microsoft.net.test.sdk to 17.13.0 by @renovate[bot] in #640
  • chore(deps): update getsentry/action-release action to v1.10.4 by @renovate[bot] in #641
  • chore(deps-dev): bump esbuild from 0.19.12 to 0.25.0 in /DisCatSharp.Docs in the npm_and_yarn group across 1 directory by @dependabot[bot] in #642
  • [Part 2] Some improvements made during working on Hatsune Miku by @Lulalaby in #638
  • chore(deps): update getsentry/action-release action to v2 by @renovate[bot] in #644
  • chore(deps): update nuget packages to 9.0.2 by @renovate[bot] in #645
  • chore(deps): update nuget packages to 9.0.40 by @renovate[bot] in #646
  • chore(deps): update dependency nuget.protocol to 6.13.1 - autoclosed by @renovate[bot] in #647
  • chore(deps): update dependency microsoft.vssdk.buildtools to 17.13.2126 by @renovate[bot] in #648
  • chore(deps): update sentry-dotnet monorepo to 5.1.1 by @renovate[bot] in #649
  • chore(deps): update dependency fluentassertions to 8.1.0 by @renovate[bot] in #650
  • chore(deps): update dependency fluentassertions to 8.1.1 by @renovate[bot] in #651
  • chore(deps): update actions/upload-artifact action to v4.6.1 by @renovate[bot] in #652
  • [Part 3] Some improvements made during working on Hatsune Miku by @Lulalaby in #643
  • chore(deps): update nuget packages to 4.13.0 by @renovate[bot] in #653
  • chore(deps): update sentry-dotnet monorepo to 5.2.0 by @renovate[bot] in #654
  • chore(deps): update dependency nuget.protocol to 6.13.2 by @renovate[bot] in #655
  • chore(deps): update getsentry/action-release action to v3 by @renovate[bot] in #656
  • 🎉 net10 by @Lulalaby in #657
  • chore(deps): update dependency community.visualstudio.toolkit.17 to 17.0.533 by @renovate[bot] in #658
  • chore(deps): update getsentry/action-release action to v3.1.0 by @renovate[bot] in #659
  • chore(deps): update sentry-dotnet monorepo to 5.3.0 by @renovate[bot] in #660
  • chore(deps): update nuget packages to 9.0.3 by @renovate[bot] in #663
  • chore(deps): update nuget packages by @renovate[bot] in #665
  • chore(deps): update dependency fluentassertions to 8.2.0 by @renovate[bot] in #667
  • chore(deps): update sentry-dotnet monorepo to 5.4.0 by @renovate[bot] in #668
  • chore(deps): update actions/setup-dotnet action to v4.3.1 by @renovate[bot] in #669
  • chore(deps): update webfactory/ssh-agent action to v0.9.1 by @renovate[bot] in #670
  • chore(deps): update dependency system.runtime.compilerservices.unsafe to 6.1.1 by @renovate[bot] in #672
  • chore(deps): update dependency system.memory to 4.6.1 by @renovate[bot] in #671
  • chore(deps): update dependency system.valuetuple to 4.6.0 by @renovate[bot] in #673
  • chore(deps): update actions/upload-artifact action to v4.6.2 by @renovate[bot] in #674
  • chore(deps): update getsentry/action-release action to v3.1.1 by @renovate[bot] in #676
  • chore(deps): update sentry-dotnet monorepo to 5.5.0 by @renovate[bot] in #679
  • chore(deps): update dependency system.runtime.compilerservices.unsafe to 6.1.2 by @renovate[bot] in #680
  • Update hosting.md by @KristalliDev in #683
  • chore(deps): update nuget packages by @renovate[bot] in #682
  • chore(deps): update sentry-dotnet monorepo to 5.5.1 by @renovate[bot] in #681
  • chore(deps): update sentry-dotnet monorepo to 5.6.0 by @renovate[bot] in #684
  • chore(deps): update sentry-dotnet monorepo to 5.12.0 by @renovate[bot] in #686
  • chore(deps): update dependency xunit.runner.visualstudio to 3.1.2 by @renovate[bot] in #685
  • chore(deps): update mcr.microsoft.com/devcontainers/universal docker tag to v3 by @renovate[bot] in #696
  • chore(deps): update getsentry/action-release action to v3.2.0 by @renovate[bot] in #695
  • chore(deps): update dependency system.memory to 4.6.3 by @renovate[bot] in #691
  • chore(deps): update dependency microsoft.vssdk.buildtools to 17.14.2094 by @renovate[bot] in #689
  • chore(deps): update dependency microsoft.codeanalysis.analyzers to v4 by @renovate[bot] in #690
  • chore(deps): update nuget packages by @renovate[bot] in #697
  • Implement standalone scoped dependency injection for ApplicationCommands by @Copilot in #701
  • chore(deps): update actions/download-artifact action to v5 by @renovate[bot] in https://github.com/Aiko-IT-Syste...
Read more

v10.6.7

08 Feb 11:31
2cd86c8

Choose a tag to compare

Version with some fixes. Please report any issues to us.

What's Changed

  • feat: Components V2 (prev: UI Kit) by @Lulalaby in #601
  • chore(deps): update actions/setup-dotnet action to v4.3.0 by @renovate in #630
  • chore(deps): update sentry-dotnet monorepo to 5.1.0 by @renovate in #633
  • chore(deps): update getsentry/action-release action to v1.10.1 by @renovate in #635
  • chore(deps): update getsentry/action-release action to v1.10.2 by @renovate in #637
  • chore(deps): update dependency xunit.runner.visualstudio to 3.0.2 by @renovate in #636
  • [Part 1] Some improvements made during working on Hatsune Miku by @Lulalaby in #632

Full Changelog: v10.6.6...v10.6.7