feat: exorcise entity framework core from most responders
This commit is contained in:
parent
33b78a7ac5
commit
5891f28f7c
32 changed files with 743 additions and 145 deletions
|
|
@ -14,8 +14,7 @@
|
|||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
using Remora.Discord.API.Abstractions.Gateway.Events;
|
||||
|
|
@ -27,7 +26,7 @@ using Remora.Results;
|
|||
namespace Catalogger.Backend.Bot.Responders.Channels;
|
||||
|
||||
public class ChannelCreateResponder(
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
RoleCache roleCache,
|
||||
ChannelCache channelCache,
|
||||
UserCache userCache,
|
||||
|
|
@ -96,7 +95,7 @@ public class ChannelCreateResponder(
|
|||
}
|
||||
}
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(ch.GuildID.Value, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(ch.GuildID);
|
||||
webhookExecutor.QueueLog(
|
||||
guildConfig,
|
||||
LogChannelType.ChannelCreate,
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -27,7 +28,7 @@ namespace Catalogger.Backend.Bot.Responders.Channels;
|
|||
|
||||
public class ChannelDeleteResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
ChannelCache channelCache,
|
||||
WebhookExecutorService webhookExecutor
|
||||
) : IResponder<IChannelDelete>
|
||||
|
|
@ -49,7 +50,7 @@ public class ChannelDeleteResponder(
|
|||
return Result.Success;
|
||||
}
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(evt.GuildID.Value, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(evt.GuildID.Value);
|
||||
var embed = new EmbedBuilder()
|
||||
.WithTitle("Channel deleted")
|
||||
.WithColour(DiscordUtils.Red)
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -30,7 +31,7 @@ namespace Catalogger.Backend.Bot.Responders.Channels;
|
|||
|
||||
public class ChannelUpdateResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
ChannelCache channelCache,
|
||||
RoleCache roleCache,
|
||||
UserCache userCache,
|
||||
|
|
@ -49,7 +50,7 @@ public class ChannelUpdateResponder(
|
|||
return Result.Success;
|
||||
}
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(evt.GuildID.Value, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
|
||||
|
||||
var builder = new EmbedBuilder()
|
||||
.WithTitle(
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -27,7 +28,7 @@ namespace Catalogger.Backend.Bot.Responders.Guilds;
|
|||
|
||||
public class GuildBanAddResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
WebhookExecutorService webhookExecutor,
|
||||
UserCache userCache,
|
||||
AuditLogCache auditLogCache,
|
||||
|
|
@ -38,7 +39,7 @@ public class GuildBanAddResponder(
|
|||
|
||||
public async Task<Result> RespondAsync(IGuildBanAdd evt, CancellationToken ct = default)
|
||||
{
|
||||
var guildConfig = await db.GetGuildAsync(evt.GuildID, true, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
|
||||
|
||||
// Delay 2 seconds for the audit log
|
||||
await Task.Delay(2000, ct);
|
||||
|
|
@ -76,10 +77,8 @@ public class GuildBanAddResponder(
|
|||
pkSystem.Id,
|
||||
evt.GuildID
|
||||
);
|
||||
guildConfig.BannedSystems.Add(pkSystem.Id);
|
||||
guildConfig.BannedSystems.Add(pkSystem.Uuid.ToString());
|
||||
db.Update(guildConfig);
|
||||
await db.SaveChangesAsync(ct);
|
||||
|
||||
await guildRepository.BanSystemAsync(evt.GuildID, pkSystem.Id, pkSystem.Uuid);
|
||||
}
|
||||
|
||||
embed.AddField(
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -27,7 +28,7 @@ namespace Catalogger.Backend.Bot.Responders.Guilds;
|
|||
|
||||
public class GuildBanRemoveResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
WebhookExecutorService webhookExecutor,
|
||||
UserCache userCache,
|
||||
AuditLogCache auditLogCache,
|
||||
|
|
@ -38,7 +39,7 @@ public class GuildBanRemoveResponder(
|
|||
|
||||
public async Task<Result> RespondAsync(IGuildBanRemove evt, CancellationToken ct = default)
|
||||
{
|
||||
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
|
||||
|
||||
// Delay 2 seconds for the audit log
|
||||
await Task.Delay(2000, ct);
|
||||
|
|
@ -68,10 +69,7 @@ public class GuildBanRemoveResponder(
|
|||
var pkSystem = await pluralkitApi.GetPluralKitSystemAsync(evt.User.ID.Value, ct);
|
||||
if (pkSystem != null)
|
||||
{
|
||||
guildConfig.BannedSystems.Remove(pkSystem.Id);
|
||||
guildConfig.BannedSystems.Remove(pkSystem.Uuid.ToString());
|
||||
db.Update(guildConfig);
|
||||
await db.SaveChangesAsync(ct);
|
||||
await guildRepository.UnbanSystemAsync(evt.GuildID, pkSystem.Id, pkSystem.Uuid);
|
||||
|
||||
embed.AddField(
|
||||
"PluralKit system",
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
using Catalogger.Backend.Cache;
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
using Remora.Discord.API.Abstractions.Gateway.Events;
|
||||
|
|
@ -29,7 +30,7 @@ namespace Catalogger.Backend.Bot.Responders.Guilds;
|
|||
public class GuildCreateResponder(
|
||||
Config config,
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
GuildCache guildCache,
|
||||
EmojiCache emojiCache,
|
||||
ChannelCache channelCache,
|
||||
|
|
@ -75,13 +76,9 @@ public class GuildCreateResponder(
|
|||
guildId = unavailableGuild.ID.ToUlong();
|
||||
}
|
||||
|
||||
var tx = await db.Database.BeginTransactionAsync(ct);
|
||||
if (await db.Guilds.FindAsync([guildId], ct) != null)
|
||||
if (await guildRepository.IsGuildKnown(guildId))
|
||||
return Result.Success;
|
||||
|
||||
db.Add(new Guild { Id = guildId });
|
||||
await db.SaveChangesAsync(ct);
|
||||
await tx.CommitAsync(ct);
|
||||
await guildRepository.AddGuildAsync(guildId);
|
||||
|
||||
_logger.Information("Joined new guild {GuildName} / {GuildId}", guildName, guildId);
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -29,7 +30,7 @@ namespace Catalogger.Backend.Bot.Responders.Guilds;
|
|||
|
||||
public class GuildEmojisUpdateResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
EmojiCache emojiCache,
|
||||
WebhookExecutorService webhookExecutor
|
||||
) : IResponder<IGuildEmojisUpdate>
|
||||
|
|
@ -111,7 +112,7 @@ public class GuildEmojisUpdateResponder(
|
|||
return Result.Success;
|
||||
}
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
|
||||
webhookExecutor.QueueLog(guildConfig, LogChannelType.GuildEmojisUpdate, embed);
|
||||
return Result.Success;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -28,7 +29,7 @@ namespace Catalogger.Backend.Bot.Responders.Guilds;
|
|||
|
||||
public class GuildUpdateResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
GuildCache guildCache,
|
||||
UserCache userCache,
|
||||
WebhookExecutorService webhookExecutor
|
||||
|
|
@ -97,7 +98,7 @@ public class GuildUpdateResponder(
|
|||
|
||||
if (embed.Fields.Count != 0)
|
||||
{
|
||||
var guildConfig = await db.GetGuildAsync(evt.ID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(evt.ID);
|
||||
webhookExecutor.QueueLog(
|
||||
guildConfig,
|
||||
LogChannelType.GuildUpdate,
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
using Catalogger.Backend.Cache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -28,7 +29,7 @@ namespace Catalogger.Backend.Bot.Responders.Invites;
|
|||
|
||||
public class InviteCreateResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
IInviteCache inviteCache,
|
||||
IDiscordRestGuildAPI guildApi,
|
||||
WebhookExecutorService webhookExecutor
|
||||
|
|
@ -74,7 +75,7 @@ public class InviteCreateResponder(
|
|||
inline: true
|
||||
);
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(guildId, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
|
||||
webhookExecutor.QueueLog(
|
||||
guildConfig,
|
||||
LogChannelType.InviteCreate,
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
|
||||
using Catalogger.Backend.Cache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -29,6 +31,7 @@ namespace Catalogger.Backend.Bot.Responders.Invites;
|
|||
|
||||
public class InviteDeleteResponder(
|
||||
ILogger logger,
|
||||
GuildRepository guildRepository,
|
||||
DatabaseContext db,
|
||||
IInviteCache inviteCache,
|
||||
WebhookExecutorService webhookExecutor,
|
||||
|
|
@ -89,7 +92,7 @@ public class InviteDeleteResponder(
|
|||
inline: true
|
||||
);
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(guildId, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(guildId);
|
||||
webhookExecutor.QueueLog(
|
||||
guildConfig,
|
||||
LogChannelType.InviteDelete,
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
using Catalogger.Backend.Cache;
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -35,6 +36,7 @@ namespace Catalogger.Backend.Bot.Responders.Members;
|
|||
public class GuildMemberAddResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
IMemberCache memberCache,
|
||||
IInviteCache inviteCache,
|
||||
UserCache userCache,
|
||||
|
|
@ -62,7 +64,7 @@ public class GuildMemberAddResponder(
|
|||
.WithCurrentTimestamp()
|
||||
.WithFooter($"ID: {user.ID}");
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(member.GuildID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(member.GuildID);
|
||||
var guildRes = await guildApi.GetGuildAsync(member.GuildID, withCounts: true, ct);
|
||||
if (guildRes.IsSuccess && guildRes.Entity.ApproximateMemberCount.IsDefined())
|
||||
builder.Description +=
|
||||
|
|
|
|||
|
|
@ -15,8 +15,7 @@
|
|||
|
||||
using Catalogger.Backend.Cache;
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
using Remora.Discord.API.Abstractions.Gateway.Events;
|
||||
|
|
@ -28,7 +27,7 @@ namespace Catalogger.Backend.Bot.Responders.Members;
|
|||
|
||||
public class GuildMemberRemoveResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
IMemberCache memberCache,
|
||||
RoleCache roleCache,
|
||||
UserCache userCache,
|
||||
|
|
@ -50,7 +49,7 @@ public class GuildMemberRemoveResponder(
|
|||
.WithFooter($"ID: {evt.User.ID}")
|
||||
.WithCurrentTimestamp();
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
|
||||
|
||||
var member = await memberCache.TryGetAsync(evt.GuildID, evt.User.ID);
|
||||
if (member == null)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
using Catalogger.Backend.Cache;
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -30,7 +31,7 @@ namespace Catalogger.Backend.Bot.Responders.Members;
|
|||
|
||||
public class GuildMemberUpdateResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
UserCache userCache,
|
||||
RoleCache roleCache,
|
||||
IMemberCache memberCache,
|
||||
|
|
@ -145,7 +146,7 @@ public class GuildMemberUpdateResponder(
|
|||
.GetOrThrow();
|
||||
}
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(newMember.GuildID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(newMember.GuildID);
|
||||
webhookExecutor.QueueLog(guildConfig, LogChannelType.GuildMemberAvatarUpdate, embed);
|
||||
return Result.Success;
|
||||
}
|
||||
|
|
@ -204,7 +205,7 @@ public class GuildMemberUpdateResponder(
|
|||
);
|
||||
}
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(newMember.GuildID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(newMember.GuildID);
|
||||
webhookExecutor.QueueLog(
|
||||
guildConfig,
|
||||
LogChannelType.GuildMemberNickUpdate,
|
||||
|
|
@ -253,7 +254,7 @@ public class GuildMemberUpdateResponder(
|
|||
embed.AddField("Reason", "*(unknown)*");
|
||||
}
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(member.GuildID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(member.GuildID);
|
||||
webhookExecutor.QueueLog(
|
||||
guildConfig,
|
||||
LogChannelType.GuildMemberTimeout,
|
||||
|
|
@ -268,7 +269,7 @@ public class GuildMemberUpdateResponder(
|
|||
CancellationToken ct = default
|
||||
)
|
||||
{
|
||||
var guildConfig = await db.GetGuildAsync(member.GuildID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(member.GuildID);
|
||||
var guildRoles = roleCache.GuildRoles(member.GuildID).ToList();
|
||||
|
||||
var keyRoleUpdate = new EmbedBuilder()
|
||||
|
|
|
|||
|
|
@ -15,9 +15,7 @@
|
|||
|
||||
using System.Text.RegularExpressions;
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Models;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
using Humanizer;
|
||||
|
|
@ -30,8 +28,8 @@ namespace Catalogger.Backend.Bot.Responders.Messages;
|
|||
public class MessageCreateResponder(
|
||||
ILogger logger,
|
||||
Config config,
|
||||
DatabaseContext db,
|
||||
MessageRepository messageRepository,
|
||||
GuildRepository guildRepository,
|
||||
DapperMessageRepository messageRepository,
|
||||
UserCache userCache,
|
||||
PkMessageHandler pkMessageHandler
|
||||
) : IResponder<IMessageCreate>
|
||||
|
|
@ -52,13 +50,12 @@ public class MessageCreateResponder(
|
|||
return Result.Success;
|
||||
}
|
||||
|
||||
var guild = await db.GetGuildAsync(msg.GuildID, false, ct);
|
||||
var guild = await guildRepository.GetAsync(msg.GuildID);
|
||||
// The guild needs to have enabled at least one of the message logging events,
|
||||
// and the channel must not be ignored, to store the message.
|
||||
if (guild.IsMessageIgnored(msg.ChannelID, msg.Author.ID))
|
||||
{
|
||||
db.IgnoredMessages.Add(new IgnoredMessage(msg.ID.ToUlong()));
|
||||
await db.SaveChangesAsync(ct);
|
||||
await messageRepository.IgnoreMessageAsync(msg.ID.Value);
|
||||
return Result.Success;
|
||||
}
|
||||
|
||||
|
|
@ -68,8 +65,7 @@ public class MessageCreateResponder(
|
|||
_ = pkMessageHandler.HandleProxiedMessageAsync(msg.ID.Value);
|
||||
else if (msg.ApplicationID.HasValue && msg.ApplicationID.Is(config.Discord.ApplicationId))
|
||||
{
|
||||
db.IgnoredMessages.Add(new IgnoredMessage(msg.ID.Value));
|
||||
await db.SaveChangesAsync(ct);
|
||||
await messageRepository.IgnoreMessageAsync(msg.ID.Value);
|
||||
return Result.Success;
|
||||
}
|
||||
|
||||
|
|
@ -149,19 +145,19 @@ public partial class PkMessageHandler(ILogger logger, IServiceProvider services)
|
|||
}
|
||||
|
||||
await using var scope = services.CreateAsyncScope();
|
||||
await using var db = scope.ServiceProvider.GetRequiredService<DatabaseContext>();
|
||||
var messageRepository = scope.ServiceProvider.GetRequiredService<MessageRepository>();
|
||||
await using var messageRepository =
|
||||
scope.ServiceProvider.GetRequiredService<DapperMessageRepository>();
|
||||
|
||||
await messageRepository.SetProxiedMessageDataAsync(
|
||||
msgId,
|
||||
originalId,
|
||||
authorId,
|
||||
systemId: match.Groups[1].Value,
|
||||
memberId: match.Groups[2].Value
|
||||
await Task.WhenAll(
|
||||
messageRepository.SetProxiedMessageDataAsync(
|
||||
msgId,
|
||||
originalId,
|
||||
authorId,
|
||||
systemId: match.Groups[1].Value,
|
||||
memberId: match.Groups[2].Value
|
||||
),
|
||||
messageRepository.IgnoreMessageAsync(originalId)
|
||||
);
|
||||
|
||||
db.IgnoredMessages.Add(new IgnoredMessage(originalId));
|
||||
await db.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task HandleProxiedMessageAsync(ulong msgId)
|
||||
|
|
@ -169,8 +165,8 @@ public partial class PkMessageHandler(ILogger logger, IServiceProvider services)
|
|||
await Task.Delay(3.Seconds());
|
||||
|
||||
await using var scope = services.CreateAsyncScope();
|
||||
await using var db = scope.ServiceProvider.GetRequiredService<DatabaseContext>();
|
||||
var messageRepository = scope.ServiceProvider.GetRequiredService<MessageRepository>();
|
||||
await using var messageRepository =
|
||||
scope.ServiceProvider.GetRequiredService<DapperMessageRepository>();
|
||||
var pluralkitApi = scope.ServiceProvider.GetRequiredService<PluralkitApiService>();
|
||||
|
||||
var (isStored, hasProxyInfo) = await messageRepository.HasProxyInfoAsync(msgId);
|
||||
|
|
@ -193,15 +189,15 @@ public partial class PkMessageHandler(ILogger logger, IServiceProvider services)
|
|||
return;
|
||||
}
|
||||
|
||||
await messageRepository.SetProxiedMessageDataAsync(
|
||||
msgId,
|
||||
pkMessage.Original,
|
||||
pkMessage.Sender,
|
||||
pkMessage.System?.Id,
|
||||
pkMessage.Member?.Id
|
||||
await Task.WhenAll(
|
||||
messageRepository.SetProxiedMessageDataAsync(
|
||||
msgId,
|
||||
pkMessage.Original,
|
||||
pkMessage.Sender,
|
||||
pkMessage.System?.Id,
|
||||
pkMessage.Member?.Id
|
||||
),
|
||||
messageRepository.IgnoreMessageAsync(pkMessage.Original)
|
||||
);
|
||||
|
||||
db.IgnoredMessages.Add(new IgnoredMessage(pkMessage.Original));
|
||||
await db.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,8 +15,7 @@
|
|||
|
||||
using System.Text;
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
using NodaTime.Extensions;
|
||||
|
|
@ -32,8 +31,8 @@ namespace Catalogger.Backend.Bot.Responders.Messages;
|
|||
|
||||
public class MessageDeleteBulkResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
MessageRepository messageRepository,
|
||||
GuildRepository guildRepository,
|
||||
DapperMessageRepository messageRepository,
|
||||
WebhookExecutorService webhookExecutor,
|
||||
ChannelCache channelCache
|
||||
) : IResponder<IMessageDeleteBulk>
|
||||
|
|
@ -42,7 +41,7 @@ public class MessageDeleteBulkResponder(
|
|||
|
||||
public async Task<Result> RespondAsync(IMessageDeleteBulk evt, CancellationToken ct = default)
|
||||
{
|
||||
var guild = await db.GetGuildAsync(evt.GuildID, false, ct);
|
||||
var guild = await guildRepository.GetAsync(evt.GuildID);
|
||||
if (guild.IsMessageIgnored(evt.ChannelID, null))
|
||||
return Result.Success;
|
||||
|
||||
|
|
@ -77,7 +76,7 @@ public class MessageDeleteBulkResponder(
|
|||
|
||||
foreach (var msgId in evt.IDs.Order())
|
||||
{
|
||||
if (await messageRepository.IsMessageIgnoredAsync(msgId.Value, ct))
|
||||
if (await messageRepository.IsMessageIgnoredAsync(msgId.Value))
|
||||
{
|
||||
ignoredMessages++;
|
||||
continue;
|
||||
|
|
@ -129,7 +128,7 @@ public class MessageDeleteBulkResponder(
|
|||
return Result.Success;
|
||||
}
|
||||
|
||||
private string RenderMessage(Snowflake messageId, MessageRepository.Message? message)
|
||||
private string RenderMessage(Snowflake messageId, DapperMessageRepository.Message? message)
|
||||
{
|
||||
var timestamp = messageId.Timestamp.ToOffsetDateTime().ToString();
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,7 @@
|
|||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
using Humanizer;
|
||||
|
|
@ -33,8 +32,8 @@ namespace Catalogger.Backend.Bot.Responders.Messages;
|
|||
|
||||
public class MessageDeleteResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
MessageRepository messageRepository,
|
||||
GuildRepository guildRepository,
|
||||
DapperMessageRepository messageRepository,
|
||||
WebhookExecutorService webhookExecutor,
|
||||
ChannelCache channelCache,
|
||||
UserCache userCache,
|
||||
|
|
@ -61,10 +60,10 @@ public class MessageDeleteResponder(
|
|||
await Task.Delay(5.Seconds(), ct);
|
||||
}
|
||||
|
||||
if (await messageRepository.IsMessageIgnoredAsync(evt.ID.Value, ct))
|
||||
if (await messageRepository.IsMessageIgnoredAsync(evt.ID.Value))
|
||||
return Result.Success;
|
||||
|
||||
var guild = await db.GetGuildAsync(evt.GuildID, false, ct);
|
||||
var guild = await guildRepository.GetAsync(evt.GuildID);
|
||||
if (guild.IsMessageIgnored(evt.ChannelID, evt.ID))
|
||||
return Result.Success;
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -34,7 +35,7 @@ public class MessageUpdateResponder(
|
|||
DatabaseContext db,
|
||||
ChannelCache channelCache,
|
||||
UserCache userCache,
|
||||
MessageRepository messageRepository,
|
||||
DapperMessageRepository messageRepository,
|
||||
WebhookExecutorService webhookExecutor,
|
||||
PluralkitApiService pluralkitApi
|
||||
) : IResponder<IMessageUpdate>
|
||||
|
|
@ -58,7 +59,7 @@ public class MessageUpdateResponder(
|
|||
|
||||
var guildConfig = await db.GetGuildAsync(msg.GuildID.Value, false, ct);
|
||||
|
||||
if (await messageRepository.IsMessageIgnoredAsync(msg.ID.Value, ct))
|
||||
if (await messageRepository.IsMessageIgnoredAsync(msg.ID.Value))
|
||||
{
|
||||
_logger.Debug("Message {MessageId} should be ignored", msg.ID);
|
||||
return Result.Success;
|
||||
|
|
@ -176,7 +177,7 @@ public class MessageUpdateResponder(
|
|||
)
|
||||
{
|
||||
if (
|
||||
!await messageRepository.UpdateMessageAsync(msg, ct)
|
||||
!await messageRepository.SaveMessageAsync(msg, ct)
|
||||
&& msg.ApplicationID.Is(DiscordUtils.PkUserId)
|
||||
)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
|
|
@ -27,7 +28,7 @@ namespace Catalogger.Backend.Bot.Responders.Roles;
|
|||
|
||||
public class RoleCreateResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
RoleCache roleCache,
|
||||
WebhookExecutorService webhookExecutor
|
||||
) : IResponder<IGuildRoleCreate>
|
||||
|
|
@ -39,7 +40,7 @@ public class RoleCreateResponder(
|
|||
_logger.Debug("Received new role {RoleId} in guild {GuildId}", evt.Role.ID, evt.GuildID);
|
||||
roleCache.Set(evt.Role, evt.GuildID);
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
|
||||
|
||||
var embed = new EmbedBuilder()
|
||||
.WithTitle("Role created")
|
||||
|
|
|
|||
|
|
@ -14,8 +14,7 @@
|
|||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
using Remora.Discord.API.Abstractions.Gateway.Events;
|
||||
|
|
@ -27,7 +26,7 @@ namespace Catalogger.Backend.Bot.Responders.Roles;
|
|||
|
||||
public class RoleDeleteResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
RoleCache roleCache,
|
||||
WebhookExecutorService webhookExecutor
|
||||
) : IResponder<IGuildRoleDelete>
|
||||
|
|
@ -47,7 +46,7 @@ public class RoleDeleteResponder(
|
|||
return Result.Success;
|
||||
}
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
|
||||
|
||||
var embed = new EmbedBuilder()
|
||||
.WithTitle($"Role \"{role.Name}\" deleted")
|
||||
|
|
|
|||
|
|
@ -14,8 +14,7 @@
|
|||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
using Catalogger.Backend.Cache.InMemoryCache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Queries;
|
||||
using Catalogger.Backend.Database.Dapper.Repositories;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Catalogger.Backend.Services;
|
||||
using Humanizer;
|
||||
|
|
@ -29,7 +28,7 @@ namespace Catalogger.Backend.Bot.Responders.Roles;
|
|||
|
||||
public class RoleUpdateResponder(
|
||||
ILogger logger,
|
||||
DatabaseContext db,
|
||||
GuildRepository guildRepository,
|
||||
RoleCache roleCache,
|
||||
WebhookExecutorService webhookExecutor
|
||||
) : IResponder<IGuildRoleUpdate>
|
||||
|
|
@ -95,7 +94,7 @@ public class RoleUpdateResponder(
|
|||
if (embed.Fields.Count == 0)
|
||||
return Result.Success;
|
||||
|
||||
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
|
||||
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
|
||||
webhookExecutor.QueueLog(
|
||||
guildConfig,
|
||||
LogChannelType.GuildRoleUpdate,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue