Title: An NRE is thrown when parsing Audit Log entries for permission changes for deleted channels · Issue #2396 · DSharpPlus/DSharpPlus · GitHub
Open Graph Title: An NRE is thrown when parsing Audit Log entries for permission changes for deleted channels · Issue #2396 · DSharpPlus/DSharpPlus
X Title: An NRE is thrown when parsing Audit Log entries for permission changes for deleted channels · Issue #2396 · DSharpPlus/DSharpPlus
Description: Summary An NRE is thrown when attempting to parse an Audit Log entry for a permission change for a deleted channel. Thrown here DSharpPlus/DSharpPlus/Entities/AuditLogs/AuditLogParser.cs Lines 1090 to 1097 in 5387f0a DiscordAuditLogOverw...
Open Graph Description: Summary An NRE is thrown when attempting to parse an Audit Log entry for a permission change for a deleted channel. Thrown here DSharpPlus/DSharpPlus/Entities/AuditLogs/AuditLogParser.cs Lines 1090...
X Description: Summary An NRE is thrown when attempting to parse an Audit Log entry for a permission change for a deleted channel. Thrown here DSharpPlus/DSharpPlus/Entities/AuditLogs/AuditLogParser.cs Lines 1090...
Opengraph URL: https://github.com/DSharpPlus/DSharpPlus/issues/2396
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"An NRE is thrown when parsing Audit Log entries for permission changes for deleted channels","articleBody":"### Summary\n\nAn NRE is thrown when attempting to parse an Audit Log entry for a permission change for a deleted channel. Thrown here https://github.com/DSharpPlus/DSharpPlus/blob/5387f0a240956d0bee74213cddaaaf88a04f0381/DSharpPlus/Entities/AuditLogs/AuditLogParser.cs#L1090-L1097 `auditLogAction.TargetId!.Value` does contain the channel ID, but the `GetChannel()` call returns null so attempting to access `PermissionOverwrites` throws an NRE\n\n### What version of the library are you using?\n\nv5.0.0-nightly (make sure you are using the latest nightly!)\n\n### What .NET version are you using? Make sure to use the latest patch release for your major version.\n\n.NET 9.0\n\n### Operating System\n\n_No response_\n\n### Reproduction Steps\n\n1. Create a Discord channel\n2. Make any change to its permissions (create a user/role override, delete an override, change permissions for a user/role or the everyone role... doesn't matter)\n3. Delete the channel\n4. Attempt to fetch any number of Audit Log entries, including the second-last one (which will be your permission update), and call `ToListAsync()`—so at least something like `await Guild.GetAuditLogsAsync(2).ToListAsync()`\n\n### Trace Logs\n\n```log\n[2025-11-26 19:27:42 +00:00] [DSharpPlus.Net.RestClient] [Trace] Request 01KB0T5JEPFB4W10PEF5QXHJKD: {\"audit_log_entries\":[{\"id\":\"1443321070076559521\",\"action_type\":12,\"user_id\":\"455432936339144705\",\"target_id\":\"1443320928946753628\",\"changes\":[{\"key\":\"name\",\"old_value\":\"test\"},{\"key\":\"type\",\"old_value\":0},{\"key\":\"permission_overwrites\",\"old_value\":[]},{\"key\":\"nsfw\",\"old_value\":false},{\"key\":\"rate_limit_per_user\",\"old_value\":0},{\"key\":\"flags\",\"old_value\":0}]},{\"id\":\"1443321057103708324\",\"action_type\":15,\"user_id\":\"455432936339144705\",\"target_id\":\"1443320928946753628\",\"changes\":[{\"key\":\"id\",\"old_value\":\"943672126873960508\"},{\"key\":\"type\",\"old_value\":0},{\"key\":\"allow\",\"old_value\":\"0\"},{\"key\":\"deny\",\"old_value\":\"0\"}],\"options\":{\"id\":\"943672126873960508\",\"role_name\":\"milk\",\"type\":\"0\"}}],\"users\":[{\"id\":\"455432936339144705\",\"username\":\"floatingmilkshake\",\"avatar\":\"bdcbbabbee22ff51c15ade8fdcc98d42\",\"discriminator\":\"0\",\"public_flags\":4194560,\"flags\":4194560,\"banner\":null,\"accent_color\":null,\"global_name\":\"FloatingMilkshake\",\"avatar_decoration_data\":null,\"collectibles\":null,\"display_name_styles\":null,\"banner_color\":null,\"clan\":null,\"primary_guild\":null}],\"integrations\":[],\"webhooks\":[],\"guild_scheduled_events\":[],\"threads\":[],\"application_commands\":[],\"auto_moderation_rules\":[]}\n```\n\n### Exceptions or other error messages\n\n```txt\nAn unexpected error occurred: Object reference not set to an instance of an object.\n at DSharpPlus.Entities.AuditLogs.AuditLogParser.ParseOverwriteEntry(DiscordGuild guild, AuditLogAction auditLogAction) in /home/milkshake/repos/DSharpPlus/DSharpPlus/Entities/AuditLogs/AuditLogParser.cs:line 1090\n at DSharpPlus.Entities.AuditLogs.AuditLogParser.ParseAuditLogEntryAsync(DiscordGuild guild, AuditLogAction auditLogAction, IDictionary`2 members, IDictionary`2 threads, IDictionary`2 webhooks, IDictionary`2 events) in /home/milkshake/repos/DSharpPlus/DSharpPlus/Entities/AuditLogs/AuditLogParser.cs:line 162\n at DSharpPlus.Entities.AuditLogs.AuditLogParser.ParseAuditLogToEntriesAsync(DiscordGuild guild, AuditLog auditLog, CancellationToken cancellationToken)+MoveNext() in /home/milkshake/repos/DSharpPlus/DSharpPlus/Entities/AuditLogs/AuditLogParser.cs:line 102\n at DSharpPlus.Entities.AuditLogs.AuditLogParser.ParseAuditLogToEntriesAsync(DiscordGuild guild, AuditLog auditLog, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource\u003cSystem.Boolean\u003e.GetResult()\n at DSharpPlus.Entities.DiscordGuild.GetAuditLogsAsync(Nullable`1 limit, DiscordMember byMember, Nullable`1 actionType)+MoveNext() in /home/milkshake/repos/DSharpPlus/DSharpPlus/Entities/Guild/DiscordGuild.cs:line 2001\n at DSharpPlus.Entities.DiscordGuild.GetAuditLogsAsync(Nullable`1 limit, DiscordMember byMember, Nullable`1 actionType)+MoveNext() in /home/milkshake/repos/DSharpPlus/DSharpPlus/Entities/Guild/DiscordGuild.cs:line 2001\n at DSharpPlus.Entities.DiscordGuild.GetAuditLogsAsync(Nullable`1 limit, DiscordMember byMember, Nullable`1 actionType)+System.Threading.Tasks.Sources.IValueTaskSource\u003cSystem.Boolean\u003e.GetResult()\n at System.Linq.AsyncEnumerable.\u003cToListAsync\u003eg__Core|424_0[TSource](IAsyncEnumerable`1 source, CancellationToken cancellationToken) in /_/Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ToList.cs:line 36\n at System.Linq.AsyncEnumerable.\u003cToListAsync\u003eg__Core|424_0[TSource](IAsyncEnumerable`1 source, CancellationToken cancellationToken) in /_/Ix.NET/Source/System.Linq.Async/System/Linq/Operators/ToList.cs:line 36\n```\n\n### Anything else you'd like to share\n\n_No response_","author":{"url":"https://github.com/FloatingMilkshake","@type":"Person","name":"FloatingMilkshake"},"datePublished":"2025-11-26T19:57:52.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/2396/DSharpPlus/issues/2396"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:f6e8a690-d9c0-1813-7380-d2501354da4f |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9FF8:D2F5:644D2:81A79:698D52BB |
| html-safe-nonce | 10d57cda695bb52483096879b94f7fa2edbb7e6fb4f5b96215168af7dde97c62 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5RkY4OkQyRjU6NjQ0RDI6ODFBNzk6Njk4RDUyQkIiLCJ2aXNpdG9yX2lkIjoiMTI5MjQ4NTc2NDI4NjU5OTg2NyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 982531ae018002d0cc0409e312ae2e5f39b5bd3361c9abf24c043a56beba68a8 |
| hovercard-subject-tag | issue:3668875374 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/DSharpPlus/DSharpPlus/2396/issue_layout |
| twitter:image | https://opengraph.githubassets.com/7cdc2d4e34ecff7f8514e9c34fff27c66a1627c46a7357d578f621d9f55e8bc6/DSharpPlus/DSharpPlus/issues/2396 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/7cdc2d4e34ecff7f8514e9c34fff27c66a1627c46a7357d578f621d9f55e8bc6/DSharpPlus/DSharpPlus/issues/2396 |
| og:image:alt | Summary An NRE is thrown when attempting to parse an Audit Log entry for a permission change for a deleted channel. Thrown here DSharpPlus/DSharpPlus/Entities/AuditLogs/AuditLogParser.cs Lines 1090... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | FloatingMilkshake |
| hostname | github.com |
| expected-hostname | github.com |
| None | c0818105fa276287e9369cfdefa0a0fa7953719791ceff9b94d69623c0a4fe8a |
| turbo-cache-control | no-preview |
| go-import | github.com/DSharpPlus/DSharpPlus git https://github.com/DSharpPlus/DSharpPlus.git |
| octolytics-dimension-user_id | 36208721 |
| octolytics-dimension-user_login | DSharpPlus |
| octolytics-dimension-repository_id | 67243489 |
| octolytics-dimension-repository_nwo | DSharpPlus/DSharpPlus |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 67243489 |
| octolytics-dimension-repository_network_root_nwo | DSharpPlus/DSharpPlus |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | a95a17cc440c14d4fcddc0641bc1136fa8d908f0 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width