diff --git a/Catalogger.Backend/Bot/Commands/ChannelCommands.cs b/Catalogger.Backend/Bot/Commands/ChannelCommands.cs index 312bcfb..6889fd6 100644 --- a/Catalogger.Backend/Bot/Commands/ChannelCommands.cs +++ b/Catalogger.Backend/Bot/Commands/ChannelCommands.cs @@ -39,9 +39,7 @@ public class ChannelCommands( [DiscordDefaultMemberPermissions(DiscordPermission.ManageGuild)] public async Task ConfigureChannelsAsync() { - if (contextInjection.Context is not IInteractionCommandContext ctx) throw new CataloggerError("No context"); - if (!ctx.TryGetUserID(out var userId)) throw new CataloggerError("No user ID in context"); - if (!ctx.TryGetGuildID(out var guildId)) throw new CataloggerError("No guild ID in context"); + var (userId, guildId) = contextInjection.GetUserAndGuild(); if (!guildCache.TryGet(guildId, out var guild)) throw new CataloggerError("Guild not in cache"); var guildChannels = channelCache.GuildChannels(guildId).ToList(); var guildConfig = await db.GetGuildAsync(guildId); diff --git a/Catalogger.Backend/Bot/Responders/Messages/MessageDeleteResponder.cs b/Catalogger.Backend/Bot/Responders/Messages/MessageDeleteResponder.cs index 02c1cf8..36b4bae 100644 --- a/Catalogger.Backend/Bot/Responders/Messages/MessageDeleteResponder.cs +++ b/Catalogger.Backend/Bot/Responders/Messages/MessageDeleteResponder.cs @@ -66,9 +66,8 @@ public class MessageDeleteResponder( // Check if the message is an edit trigger message. // If it is, the API will return a valid message for its ID, but the ID won't match either `Id` or `Original`. // (We also won't have any system/member information stored for it) - if (msg is { System: null, Member: null } && MaybePkProxyTrigger(ev.ID) && false) + if (msg is { System: null, Member: null } && MaybePkProxyTrigger(ev.ID)) { - // TODO: remove the "false" if/when the API is updated to actually return this :neofox_woozy: var pkMsg = await pluralkitApi.GetPluralKitMessageAsync(ev.ID.Value, ct); if (pkMsg != null && pkMsg.Id != ev.ID.Value && pkMsg.Original != ev.ID.Value) { diff --git a/Catalogger.Backend/Bot/Responders/ReadyResponder.cs b/Catalogger.Backend/Bot/Responders/ReadyResponder.cs index e3341fa..1e98e07 100644 --- a/Catalogger.Backend/Bot/Responders/ReadyResponder.cs +++ b/Catalogger.Backend/Bot/Responders/ReadyResponder.cs @@ -6,7 +6,7 @@ using Remora.Results; namespace Catalogger.Backend.Bot.Responders; -public class ReadyResponder(ILogger logger, WebhookExecutorService webhookExecutorService, Config config) +public class ReadyResponder(ILogger logger, WebhookExecutorService webhookExecutorService) : IResponder { private readonly ILogger _logger = logger.ForContext(); @@ -17,10 +17,6 @@ public class ReadyResponder(ILogger logger, WebhookExecutorService webhookExecut _logger.Information("Ready as {User} on shard {ShardId} / {ShardCount}", gatewayEvent.User.Tag(), shardId.Item1, shardId.Item2); if (shardId.Item1 == 0) webhookExecutorService.SetSelfUser(gatewayEvent.User); - // Sanity check - var appId = gatewayEvent.Application.ID.ToUlong(); - _logger.Debug("Application ID is {ApplicationId}, is same as config? {SameAsConfig}", appId, - appId == config.Discord.ApplicationId); return Task.FromResult(Result.Success); } diff --git a/Catalogger.Backend/Extensions/DiscordExtensions.cs b/Catalogger.Backend/Extensions/DiscordExtensions.cs index 27e721b..576e34a 100644 --- a/Catalogger.Backend/Extensions/DiscordExtensions.cs +++ b/Catalogger.Backend/Extensions/DiscordExtensions.cs @@ -3,6 +3,9 @@ using OneOf; using Remora.Discord.API.Abstractions.Objects; using Remora.Discord.API.Abstractions.Rest; using Remora.Discord.API.Objects; +using Remora.Discord.Commands.Contexts; +using Remora.Discord.Commands.Extensions; +using Remora.Discord.Commands.Services; using Remora.Rest.Core; using Remora.Results; @@ -70,5 +73,14 @@ public static class DiscordExtensions public static string ToPrettyString(this IDiscordPermissionSet permissionSet) => string.Join(", ", permissionSet.GetPermissions().Select(p => p.Humanize(LetterCasing.Title))); + public static (Snowflake, Snowflake) GetUserAndGuild(this ContextInjectionService contextInjectionService) + { + if (contextInjectionService.Context is not IInteractionCommandContext ctx) + throw new CataloggerError("No context"); + if (!ctx.TryGetUserID(out var userId)) throw new CataloggerError("No user ID in context"); + if (!ctx.TryGetGuildID(out var guildId)) throw new CataloggerError("No guild ID in context"); + return (userId, guildId); + } + public class DiscordRestException(string message) : Exception(message); } \ No newline at end of file