diff --git a/PluralKit.Bot/Handlers/MessageDeleted.cs b/PluralKit.Bot/Handlers/MessageDeleted.cs index 408c363d..65bf06a6 100644 --- a/PluralKit.Bot/Handlers/MessageDeleted.cs +++ b/PluralKit.Bot/Handlers/MessageDeleted.cs @@ -32,6 +32,16 @@ public class MessageDeleted: IEventHandler, IEventHandler { // Message was deleted by something/someone else before we got to it } - - await _repo.DeleteMessage(evt.MessageId); } private async ValueTask HandleCommandDeleteReaction(MessageReactionAddEvent evt, ulong? authorId, bool isDM) diff --git a/PluralKit.Core/Database/Repository/ModelRepository.Member.cs b/PluralKit.Core/Database/Repository/ModelRepository.Member.cs index 8a45d0e6..16a59909 100644 --- a/PluralKit.Core/Database/Repository/ModelRepository.Member.cs +++ b/PluralKit.Core/Database/Repository/ModelRepository.Member.cs @@ -110,4 +110,27 @@ public partial class ModelRepository await _db.ExecuteQuery(query); } + + public async Task UpdateMemberForDeletedMessage(MemberId id, int msgCount) + { + if (msgCount <= 0) return; + + var query = new Query("members") + .When(msgCount > 1, + // when there are plenty of messages + q => q.AsUpdate(new + { + message_count = new UnsafeLiteral("message_count - 1") + }), + // when this is the only message (if the db for some reason thinks there are no messages we already returned) + q => q.AsUpdate(new + { + message_count = new UnsafeLiteral("message_count - 1"), + last_message_timestamp = new UnsafeLiteral("null") + }) + ) + .Where("id", id); + + await _db.ExecuteQuery(query); + } } \ No newline at end of file