From d997f725e248d65439d396c768c7463438675d8e Mon Sep 17 00:00:00 2001 From: alyssa Date: Sat, 19 Oct 2024 07:27:12 +0900 Subject: [PATCH] fix(bot): fix a few NPEs --- PluralKit.Bot/ApplicationCommands/Message.cs | 2 +- PluralKit.Bot/Commands/Message.cs | 2 +- PluralKit.Bot/Commands/Switch.cs | 2 ++ PluralKit.Core/Dispatch/DispatchService.cs | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/PluralKit.Bot/ApplicationCommands/Message.cs b/PluralKit.Bot/ApplicationCommands/Message.cs index d610fb13..1fc43989 100644 --- a/PluralKit.Bot/ApplicationCommands/Message.cs +++ b/PluralKit.Bot/ApplicationCommands/Message.cs @@ -78,7 +78,7 @@ public class ApplicationCommandProxiedMessage var message = await ctx.Repository.GetFullMessage(messageId); if (message != null) { - if (message.System?.Id != ctx.System.Id && message.Message.Sender != ctx.User.Id) + if (message.Message.Sender != ctx.User.Id && (ctx.System != null && message.System?.Id != ctx.System.Id)) throw new PKError("You can only delete your own messages."); await DeleteMessageInner(ctx, message.Message.Guild ?? 0, message.Message.Channel, message.Message.Mid, false); diff --git a/PluralKit.Bot/Commands/Message.cs b/PluralKit.Bot/Commands/Message.cs index 3e02fede..e92ff1f5 100644 --- a/PluralKit.Bot/Commands/Message.cs +++ b/PluralKit.Bot/Commands/Message.cs @@ -400,7 +400,7 @@ public class ProxiedMessage if (!showContent) throw new PKError(noShowContentError); - if (message.System?.Id != ctx.System.Id && message.Message.Sender != ctx.Author.Id) + if (message.Message.Sender != ctx.Author.Id && (ctx.System != null && message.System?.Id != ctx.System.Id)) throw new PKError("You can only delete your own messages."); await ctx.Rest.DeleteMessage(message.Message.Channel, message.Message.Mid); diff --git a/PluralKit.Bot/Commands/Switch.cs b/PluralKit.Bot/Commands/Switch.cs index d60da3b4..83465bd4 100644 --- a/PluralKit.Bot/Commands/Switch.cs +++ b/PluralKit.Bot/Commands/Switch.cs @@ -112,6 +112,8 @@ public class Switch await using var conn = await ctx.Database.Obtain(); var currentSwitch = await ctx.Repository.GetLatestSwitch(ctx.System.Id); + if (currentSwitch == null) + throw Errors.NoRegisteredSwitches; var currentSwitchMembers = await ctx.Repository.GetSwitchMembers(conn, currentSwitch.Id).ToListAsync().AsTask(); if (ctx.MatchFlag("first", "f")) diff --git a/PluralKit.Core/Dispatch/DispatchService.cs b/PluralKit.Core/Dispatch/DispatchService.cs index f9f79169..832e63d3 100644 --- a/PluralKit.Core/Dispatch/DispatchService.cs +++ b/PluralKit.Core/Dispatch/DispatchService.cs @@ -247,7 +247,7 @@ public class DispatchService { var repo = _provider.Resolve(); var system = await repo.GetSystemByAccount(accountId); - if (system.WebhookUrl == null) + if (system?.WebhookUrl == null) return; var data = new UpdateDispatchData();