fix(backend): ignore proxied messages if the original is ignored

This commit is contained in:
sam 2025-03-14 20:29:01 +01:00
parent cb43ac1a50
commit 84c3b42874
Signed by: sam
GPG key ID: 5F3C3C1B3166639D
2 changed files with 29 additions and 6 deletions

View file

@ -144,6 +144,19 @@ public partial class PkMessageHandler(ILogger logger, IServiceProvider services)
await using var messageRepository = await using var messageRepository =
scope.ServiceProvider.GetRequiredService<MessageRepository>(); scope.ServiceProvider.GetRequiredService<MessageRepository>();
if (await messageRepository.IsMessageIgnoredAsync(originalId))
{
_logger.Debug(
"Proxied message {MessageId} should be ignored as trigger {OriginalId} is already ignored",
msgId,
originalId
);
await messageRepository.IgnoreMessageAsync(originalId);
await messageRepository.IgnoreMessageAsync(msgId);
return;
}
_logger.Debug( _logger.Debug(
"Setting proxy data for {MessageId} and ignoring {OriginalId}", "Setting proxy data for {MessageId} and ignoring {OriginalId}",
msgId, msgId,
@ -195,6 +208,19 @@ public partial class PkMessageHandler(ILogger logger, IServiceProvider services)
pkMessage.Original pkMessage.Original
); );
if (await messageRepository.IsMessageIgnoredAsync(pkMessage.Original))
{
_logger.Debug(
"Proxied message {MessageId} should be ignored as trigger {OriginalId} is already ignored",
pkMessage.Id,
pkMessage.Original
);
await messageRepository.IgnoreMessageAsync(pkMessage.Original);
await messageRepository.IgnoreMessageAsync(msgId);
return;
}
await messageRepository.SetProxiedMessageDataAsync( await messageRepository.SetProxiedMessageDataAsync(
msgId, msgId,
pkMessage.Original, pkMessage.Original,

View file

@ -18,7 +18,6 @@ using Catalogger.Backend.Database.Repositories;
using Catalogger.Backend.Extensions; using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services; using Catalogger.Backend.Services;
using Humanizer; using Humanizer;
using NodaTime;
using Remora.Discord.API; using Remora.Discord.API;
using Remora.Discord.API.Abstractions.Gateway.Events; using Remora.Discord.API.Abstractions.Gateway.Events;
using Remora.Discord.API.Abstractions.Objects; using Remora.Discord.API.Abstractions.Objects;
@ -27,7 +26,6 @@ using Remora.Discord.Extensions.Embeds;
using Remora.Discord.Gateway.Responders; using Remora.Discord.Gateway.Responders;
using Remora.Rest.Core; using Remora.Rest.Core;
using Remora.Results; using Remora.Results;
using Serilog.Context;
namespace Catalogger.Backend.Bot.Responders.Messages; namespace Catalogger.Backend.Bot.Responders.Messages;
@ -38,7 +36,6 @@ public class MessageDeleteResponder(
WebhookExecutorService webhookExecutor, WebhookExecutorService webhookExecutor,
ChannelCache channelCache, ChannelCache channelCache,
UserCache userCache, UserCache userCache,
IClock clock,
PluralkitApiService pluralkitApi PluralkitApiService pluralkitApi
) : IResponder<IMessageDelete> ) : IResponder<IMessageDelete>
{ {
@ -81,8 +78,8 @@ public class MessageDeleteResponder(
new Embed( new Embed(
Title: "Message deleted", Title: "Message deleted",
Description: $"A message not found in the database was deleted in <#{evt.ChannelID}> ({evt.ChannelID}).", Description: $"A message not found in the database was deleted in <#{evt.ChannelID}> ({evt.ChannelID}).",
Footer: new EmbedFooter(Text: $"ID: {evt.ID}"), Footer: new EmbedFooter(Text: $"ID: {evt.ID} | Original sent at"),
Timestamp: clock.GetCurrentInstant().ToDateTimeOffset() Timestamp: evt.ID.Timestamp
) )
); );
@ -124,7 +121,7 @@ public class MessageDeleteResponder(
.WithTitle("Message deleted") .WithTitle("Message deleted")
.WithDescription(msg.Content) .WithDescription(msg.Content)
.WithColour(DiscordUtils.Red) .WithColour(DiscordUtils.Red)
.WithFooter($"ID: {msg.Id}") .WithFooter($"ID: {msg.Id} | Original sent at")
.WithTimestamp(evt.ID); .WithTimestamp(evt.ID);
if (user != null) if (user != null)