Title: AuditLogParser throws InvalidOperationException for Audit Log entries with a null user_id · Issue #2399 · DSharpPlus/DSharpPlus · GitHub
Open Graph Title: AuditLogParser throws InvalidOperationException for Audit Log entries with a null user_id · Issue #2399 · DSharpPlus/DSharpPlus
X Title: AuditLogParser throws InvalidOperationException for Audit Log entries with a null user_id · Issue #2399 · DSharpPlus/DSharpPlus
Description: Summary This has the same cause as #2243, and I mentioned it here #2243 (comment) System.InvalidOperationException is thrown in AuditLogParser when an Audit Log entry is logged where "user_id": null. Here is an example event: {"t":"GUILD...
Open Graph Description: Summary This has the same cause as #2243, and I mentioned it here #2243 (comment) System.InvalidOperationException is thrown in AuditLogParser when an Audit Log entry is logged where "user_id": nul...
X Description: Summary This has the same cause as #2243, and I mentioned it here #2243 (comment) System.InvalidOperationException is thrown in AuditLogParser when an Audit Log entry is logged where "user_id&...
Opengraph URL: https://github.com/DSharpPlus/DSharpPlus/issues/2399
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"AuditLogParser throws InvalidOperationException for Audit Log entries with a null user_id","articleBody":"### Summary\n\nThis has the same cause as #2243, and I mentioned it here https://github.com/DSharpPlus/DSharpPlus/issues/2243#issuecomment-2825343620\n\n`System.InvalidOperationException` is thrown in AuditLogParser when an Audit Log entry is logged where `\"user_id\": null`. Here is an example event:\n```\n{\"t\":\"GUILD_AUDIT_LOG_ENTRY_CREATE\",\"s\":8,\"op\":0,\"d\":{\"user_id\":null,\"target_id\":\"795484125184131073\",\"reason\":\"Profile contained keyword that violated Block Words in Member Profile Names rule\",\"options\":{\"auto_moderation_rule_trigger_type\":\"6\",\"auto_moderation_rule_name\":\"Block Words in Member Profile Names\"},\"id\":\"1447427436772982797\",\"action_type\":146,\"guild_id\":\"799644062973427743\"}}\n```\nand the Audit Log entry:\n```\n{\n \"id\": \"1447427436772982797\",\n \"action_type\": 146,\n \"user_id\": null,\n \"target_id\": \"795484125184131073\",\n \"options\": {\n \"auto_moderation_rule_name\": \"Block Words in Member Profile Names\",\n \"auto_moderation_rule_trigger_type\": \"6\"\n },\n \"reason\": \"Profile contained keyword that violated Block Words in Member Profile Names rule\"\n},\n```\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\ncopying from #2243...\n\n1. Set up the \"Block Words in Member Profile Names\" AutoMod rule and add a word\n2. Set your global Display Name so that it contains the blocked word\n3. Go look at your console\n\nThese null Audit Log entries are also noticeably different from other ones when viewing the Audit Log on Discord:\n\n\u003cimg width=\"695\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/0ccf86fe-0e85-4d60-8e27-e078ff9c5bf0\" /\u003e\n\n(flagged vs quarantined doesn't make a difference, \"Unknown User\"/null is logged for both—the bottom entry here is a nickname update just to show the difference!)\n\n### Trace Logs\n\n```log\n[2025-12-08 03:19:52 +00:00] [DSharpPlus.Net.Gateway.ITransportService] [Trace] Payload for the last inbound gateway event: {\"t\":\"GUILD_AUDIT_LOG_ENTRY_CREATE\",\"s\":8,\"op\":0,\"d\":{\"user_id\":null,\"target_id\":\"795484125184131073\",\"reason\":\"Profile contained keyword that violated Block Words in Member Profile Names rule\",\"options\":{\"auto_moderation_rule_trigger_type\":\"6\",\"auto_moderation_rule_name\":\"Block Words in Member Profile Names\"},\"id\":\"1447427436772982797\",\"action_type\":146,\"guild_id\":\"799644062973427743\"}}\n[2025-12-08 03:19:52 +00:00] [DSharpPlus.Net.Gateway.ITransportService] [Trace] Length for the last inbound gateway event: 91\n[2025-12-08 03:19:52 +00:00] [DSharpPlus.Net.Gateway.ITransportService] [Trace] Payload for the last inbound gateway event: {\"t\":\"AUTO_MODERATION_ACTION_EXECUTION\",\"s\":9,\"op\":0,\"d\":{\"user_id\":\"795484125184131073\",\"rule_trigger_type\":6,\"rule_id\":\"1447425985107591248\",\"matched_keyword\":\"testingmilkshake\",\"matched_content\":\"testingmilkshake\",\"content\":\"\",\"action\":{\"type\":4,\"metadata\":{}},\"guild_id\":\"799644062973427743\"}}\n[2025-12-08 03:19:52 +00:00] [DSharpPlus.Net.Gateway.ITransportService] [Trace] Length for the last inbound gateway event: 25\n[2025-12-08 03:19:52 +00:00] [DSharpPlus.Net.Gateway.ITransportService] [Trace] Payload for the last inbound gateway event: {\"t\":\"GUILD_AUDIT_LOG_ENTRY_CREATE\",\"s\":10,\"op\":0,\"d\":{\"user_id\":null,\"target_id\":\"795484125184131073\",\"reason\":\"Profile contained keyword that violated Block Words in Member Profile Names rule\",\"options\":{\"auto_moderation_rule_trigger_type\":\"6\",\"auto_moderation_rule_name\":\"Block Words in Member Profile Names\"},\"id\":\"1447427436772982799\",\"action_type\":144,\"guild_id\":\"799644062973427743\"}}\n[2025-12-08 03:19:52 +00:00] [DSharpPlus.Net.Gateway.ITransportService] [Trace] Length for the last inbound gateway event: 44\n[2025-12-08 03:19:52 +00:00] [DSharpPlus.Net.Gateway.ITransportService] [Trace] Payload for the last inbound gateway event: {\"t\":\"AUTO_MODERATION_ACTION_EXECUTION\",\"s\":11,\"op\":0,\"d\":{\"user_id\":\"795484125184131073\",\"rule_trigger_type\":6,\"rule_id\":\"1447425985107591248\",\"matched_keyword\":\"testingmilkshake\",\"matched_content\":\"testingmilkshake\",\"content\":\"\",\"alert_system_message_id\":\"1447427436772982795\",\"action\":{\"type\":2,\"metadata\":{\"channel_id\":\"1409289579139305573\"}},\"guild_id\":\"799644062973427743\"}}\n[2025-12-08 03:19:52 +00:00] [DSharpPlus.DiscordClient] [Error] Dispatch threw an exception: \nSystem.InvalidOperationException: Nullable object must have a value.\n at System.Nullable`1.get_Value()\n at DSharpPlus.Entities.AuditLogs.AuditLogParser.ParseAuditLogEntryAsync(DiscordGuild guild, AuditLogAction auditLogAction, IDictionary`2 members, IDictionary`2 threads, IDictionary`2 webhooks, IDictionary`2 events)\n at DSharpPlus.DiscordClient.HandleDispatchAsync(GatewayPayload payload)\n at DSharpPlus.DiscordClient.ReceiveGatewayEventsAsync() : Nullable object must have a value.\n at System.Nullable`1.get_Value()\n at DSharpPlus.Entities.AuditLogs.AuditLogParser.ParseAuditLogEntryAsync(DiscordGuild guild, AuditLogAction auditLogAction, IDictionary`2 members, IDictionary`2 threads, IDictionary`2 webhooks, IDictionary`2 events)\n at DSharpPlus.DiscordClient.HandleDispatchAsync(GatewayPayload payload)\n at DSharpPlus.DiscordClient.ReceiveGatewayEventsAsync()\n```\n\n### Exceptions or other error messages\n\n```txt\n[2025-12-08 03:19:52 +00:00] [DSharpPlus.DiscordClient] [Error] Dispatch threw an exception: \nSystem.InvalidOperationException: Nullable object must have a value.\n at System.Nullable`1.get_Value()\n at DSharpPlus.Entities.AuditLogs.AuditLogParser.ParseAuditLogEntryAsync(DiscordGuild guild, AuditLogAction auditLogAction, IDictionary`2 members, IDictionary`2 threads, IDictionary`2 webhooks, IDictionary`2 events)\n at DSharpPlus.DiscordClient.HandleDispatchAsync(GatewayPayload payload)\n at DSharpPlus.DiscordClient.ReceiveGatewayEventsAsync() : Nullable object must have a value.\n at System.Nullable`1.get_Value()\n at DSharpPlus.Entities.AuditLogs.AuditLogParser.ParseAuditLogEntryAsync(DiscordGuild guild, AuditLogAction auditLogAction, IDictionary`2 members, IDictionary`2 threads, IDictionary`2 webhooks, IDictionary`2 events)\n at DSharpPlus.DiscordClient.HandleDispatchAsync(GatewayPayload payload)\n at DSharpPlus.DiscordClient.ReceiveGatewayEventsAsync()\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-12-08T03:37:52.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/2399/DSharpPlus/issues/2399"}
| 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:0902c645-1d7f-a9ad-4392-92e5c4909726 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D398:391707:143D92B:1A9ECD9:698D6B80 |
| html-safe-nonce | 3bbeb1287ac5f46afe601328bfc8b9c63769746ebe0571efacaeca09112232ae |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMzk4OjM5MTcwNzoxNDNEOTJCOjFBOUVDRDk6Njk4RDZCODAiLCJ2aXNpdG9yX2lkIjoiMzc5NzkyNzg2NTIyOTMzOTUyMCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 1da7d2412cbca86c1425ab04a86640f539940cc49ee03cf3a69e6ca1cbabf34d |
| hovercard-subject-tag | issue:3704505885 |
| 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/2399/issue_layout |
| twitter:image | https://opengraph.githubassets.com/0c9d4c793d90d597d769379b672be052214317e1446a37af3b9d34b0f66a315c/DSharpPlus/DSharpPlus/issues/2399 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/0c9d4c793d90d597d769379b672be052214317e1446a37af3b9d34b0f66a315c/DSharpPlus/DSharpPlus/issues/2399 |
| og:image:alt | Summary This has the same cause as #2243, and I mentioned it here #2243 (comment) System.InvalidOperationException is thrown in AuditLogParser when an Audit Log entry is logged where "user_id": nul... |
| 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 | 715890fa442134f528fb422ab338c0ad55c7a025 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width