From cb43ac1a503fbb30a4cdb29cc2f18dba133ed24d Mon Sep 17 00:00:00 2001 From: sam Date: Fri, 14 Mar 2025 20:11:00 +0100 Subject: [PATCH] chore(backend): update dependencies --- .config/dotnet-tools.json | 4 +- .../Messages/MessageCreateResponder.cs | 2 +- .../Messages/MessageUpdateResponder.cs | 51 ++----------------- .../Cache/RedisCache/RedisMemberCache.cs | 1 + Catalogger.Backend/Catalogger.Backend.csproj | 6 +-- .../Repositories/MessageRepository.cs | 11 +++- Catalogger.Backend/Program.cs | 3 +- README.md | 7 --- 8 files changed, 21 insertions(+), 64 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 085fcbc..d2b1b96 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,14 +3,14 @@ "isRoot": true, "tools": { "csharpier": { - "version": "0.30.1", + "version": "0.30.6", "commands": [ "dotnet-csharpier" ], "rollForward": false }, "husky": { - "version": "0.7.1", + "version": "0.7.2", "commands": [ "husky" ], diff --git a/Catalogger.Backend/Bot/Responders/Messages/MessageCreateResponder.cs b/Catalogger.Backend/Bot/Responders/Messages/MessageCreateResponder.cs index 5098cd2..0f70043 100644 --- a/Catalogger.Backend/Bot/Responders/Messages/MessageCreateResponder.cs +++ b/Catalogger.Backend/Bot/Responders/Messages/MessageCreateResponder.cs @@ -77,7 +77,7 @@ public class MessageCreateResponder( return Result.Success; } - await messageRepository.SaveMessageAsync(msg, ct); + await messageRepository.SaveMessageAsync(msg, msg.GuildID, ct); return Result.Success; } } diff --git a/Catalogger.Backend/Bot/Responders/Messages/MessageUpdateResponder.cs b/Catalogger.Backend/Bot/Responders/Messages/MessageUpdateResponder.cs index fa1e75d..0bf2c28 100644 --- a/Catalogger.Backend/Bot/Responders/Messages/MessageUpdateResponder.cs +++ b/Catalogger.Backend/Bot/Responders/Messages/MessageUpdateResponder.cs @@ -20,7 +20,6 @@ using Catalogger.Backend.Services; using Remora.Discord.API; using Remora.Discord.API.Abstractions.Gateway.Events; using Remora.Discord.API.Abstractions.Objects; -using Remora.Discord.API.Gateway.Events; using Remora.Discord.API.Objects; using Remora.Discord.Extensions.Embeds; using Remora.Discord.Gateway.Responders; @@ -40,13 +39,9 @@ public class MessageUpdateResponder( { private readonly ILogger _logger = logger.ForContext(); - public async Task RespondAsync(IMessageUpdate evt, CancellationToken ct = default) + public async Task RespondAsync(IMessageUpdate msg, CancellationToken ct = default) { - using var _ = LogUtils.Enrich(evt); - - // Discord only *very* recently changed message update events to have all fields, - // so we convert the event to a MessageCreate to avoid having to unwrap every single field - var msg = ConvertToMessageCreate(evt); + using var _ = LogUtils.Enrich(msg); if (!msg.GuildID.IsDefined()) { @@ -134,7 +129,7 @@ public class MessageUpdateResponder( if (oldMessage is { System: not null, Member: not null }) { embedBuilder.WithTitle($"Message by {msg.Author.Username} edited"); - embedBuilder.AddField("\u200b", "**PluralKit information**", false); + embedBuilder.AddField("\u200b", "**PluralKit information**"); embedBuilder.AddField("System ID", oldMessage.System, true); embedBuilder.AddField("Member ID", oldMessage.Member, true); } @@ -174,7 +169,7 @@ public class MessageUpdateResponder( ) { if ( - !await messageRepository.SaveMessageAsync(msg, ct) + !await messageRepository.SaveMessageAsync(msg, msg.GuildID, ct) && msg.ApplicationID.Is(DiscordUtils.PkUserId) ) { @@ -196,44 +191,6 @@ public class MessageUpdateResponder( } } - private static MessageCreate ConvertToMessageCreate(IMessageUpdate evt) => - new( - evt.GuildID, - evt.Member, - evt.Mentions.GetOrThrow(), - evt.ID.GetOrThrow(), - evt.ChannelID.GetOrThrow(), - evt.Author.GetOrThrow(), - evt.Content.GetOrThrow(), - evt.Timestamp.GetOrThrow(), - evt.EditedTimestamp.GetOrThrow(), - IsTTS: false, - evt.MentionsEveryone.GetOrThrow(), - evt.MentionedRoles.GetOrThrow(), - evt.MentionedChannels, - evt.Attachments.GetOrThrow(), - evt.Embeds.GetOrThrow(), - evt.Reactions, - evt.Nonce, - evt.IsPinned.GetOrThrow(), - evt.WebhookID, - evt.Type.GetOrThrow(), - evt.Activity, - evt.Application, - evt.ApplicationID, - evt.MessageReference, - evt.Flags, - evt.ReferencedMessage, - evt.Interaction, - evt.Thread, - evt.Components, - evt.StickerItems, - evt.Position, - evt.Resolved, - evt.InteractionMetadata, - evt.Poll - ); - private static IEnumerable ChunksUpTo(string str, int maxChunkSize) { for (var i = 0; i < str.Length; i += maxChunkSize) diff --git a/Catalogger.Backend/Cache/RedisCache/RedisMemberCache.cs b/Catalogger.Backend/Cache/RedisCache/RedisMemberCache.cs index dfa9694..0e08c1f 100644 --- a/Catalogger.Backend/Cache/RedisCache/RedisMemberCache.cs +++ b/Catalogger.Backend/Cache/RedisCache/RedisMemberCache.cs @@ -234,6 +234,7 @@ internal record RedisMember( User.ToRemoraUser(), Nickname, Avatar != null ? new ImageHash(Avatar) : null, + Banner: null, Roles.Select(DiscordSnowflake.New).ToList(), JoinedAt, PremiumSince, diff --git a/Catalogger.Backend/Catalogger.Backend.csproj b/Catalogger.Backend/Catalogger.Backend.csproj index 6d048ab..b377418 100644 --- a/Catalogger.Backend/Catalogger.Backend.csproj +++ b/Catalogger.Backend/Catalogger.Backend.csproj @@ -21,18 +21,18 @@ - + - + - + diff --git a/Catalogger.Backend/Database/Repositories/MessageRepository.cs b/Catalogger.Backend/Database/Repositories/MessageRepository.cs index 17925c3..fc45e4f 100644 --- a/Catalogger.Backend/Database/Repositories/MessageRepository.cs +++ b/Catalogger.Backend/Database/Repositories/MessageRepository.cs @@ -18,6 +18,7 @@ using Catalogger.Backend.Extensions; using Dapper; using Remora.Discord.API; using Remora.Discord.API.Abstractions.Gateway.Events; +using Remora.Discord.API.Abstractions.Objects; using Remora.Rest.Core; namespace Catalogger.Backend.Database.Repositories; @@ -63,7 +64,11 @@ public class MessageRepository( /// /// Adds a new message. If the message is already in the database, updates the existing message instead. /// - public async Task SaveMessageAsync(IMessageCreate msg, CancellationToken ct = default) + public async Task SaveMessageAsync( + IMessage msg, + Optional guildId, + CancellationToken ct = default + ) { var content = await Task.Run( () => @@ -107,7 +112,9 @@ public class MessageRepository( Id = msg.ID.Value, UserId = msg.Author.ID.Value, ChannelId = msg.ChannelID.Value, - GuildId = msg.GuildID.Map(s => s.Value).OrDefault(), + GuildId = guildId.IsDefined(out var guildIdValue) + ? guildIdValue.Value + : (ulong?)null, Content = content, Username = username, Metadata = metadata, diff --git a/Catalogger.Backend/Program.cs b/Catalogger.Backend/Program.cs index a7a4a1b..6fbf6b3 100644 --- a/Catalogger.Backend/Program.cs +++ b/Catalogger.Backend/Program.cs @@ -66,8 +66,7 @@ builder | GatewayIntents.GuildMessages | GatewayIntents.GuildWebhooks | GatewayIntents.MessageContents - // Actually GUILD_EXPRESSIONS - | GatewayIntents.GuildEmojisAndStickers; + | GatewayIntents.GuildExpressions; // Set a default status for all shards. This is updated to a shard-specific one in StatusUpdateService. g.Presence = new UpdatePresence( diff --git a/README.md b/README.md index 9b9603c..e33918a 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,6 @@ Command-line tools for this project can be installed with `dotnet tool restore`. - We use [CSharpier][csharpier] for formatting .NET code. It can be called with `dotnet csharpier .`, but is automatically run by Husky pre-commit. -### Nuget - -We currently use Remora's GitHub packages as the releases on nuget.org are missing some key features. -Add these with `dotnet nuget add source --username --password --store-password-in-clear-text --name Remora "https://nuget.pkg.github.com/Remora/index.json"` - -You must generate a personal access token (classic) [here](personal-access-token). Only give it the `read:packages` permission. - ## Deploying Catalogger yourself The bot itself should run on any server with .NET 8 and PostgreSQL 15 or later.