From b14666aa4f6f08cc8c92e9b5799217505b46850d Mon Sep 17 00:00:00 2001 From: Ske Date: Wed, 24 Jul 2019 13:38:54 +0200 Subject: [PATCH] Store the ID of the trigger message in the database --- PluralKit.Bot/Services/ProxyService.cs | 2 +- PluralKit.Core/Stores.cs | 10 ++++++---- PluralKit.Core/db_schema.sql | 9 +++++---- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/PluralKit.Bot/Services/ProxyService.cs b/PluralKit.Bot/Services/ProxyService.cs index 69599e30..9f51ac5d 100644 --- a/PluralKit.Bot/Services/ProxyService.cs +++ b/PluralKit.Bot/Services/ProxyService.cs @@ -114,7 +114,7 @@ namespace PluralKit.Bot var hookMessageId = await ExecuteWebhook(webhook, match.InnerText, match.ProxyName, match.Member.AvatarUrl, message.Attachments.FirstOrDefault()); // Store the message in the database, and log it in the log channel (if applicable) - await _messageStorage.Store(message.Author.Id, hookMessageId, message.Channel.Id, match.Member); + await _messageStorage.Store(message.Author.Id, hookMessageId, message.Channel.Id, message.Id, match.Member); await _logChannel.LogMessage(match.System, match.Member, hookMessageId, message.Channel as IGuildChannel, message.Author, match.InnerText); // Wait a second or so before deleting the original message diff --git a/PluralKit.Core/Stores.cs b/PluralKit.Core/Stores.cs index 038416e0..db10c7e8 100644 --- a/PluralKit.Core/Stores.cs +++ b/PluralKit.Core/Stores.cs @@ -181,6 +181,7 @@ namespace PluralKit { public ulong Mid; public ulong Channel; public ulong Sender; + public ulong? OriginalMid; } public class StoredMessage { @@ -198,13 +199,14 @@ namespace PluralKit { _logger = logger.ForContext(); } - public async Task Store(ulong senderId, ulong messageId, ulong channelId, PKMember member) { + public async Task Store(ulong senderId, ulong messageId, ulong channelId, ulong originalMessage, PKMember member) { using (var conn = await _conn.Obtain()) - await conn.ExecuteAsync("insert into messages(mid, channel, member, sender) values(@MessageId, @ChannelId, @MemberId, @SenderId)", new { + await conn.ExecuteAsync("insert into messages(mid, channel, member, sender, original_mid) values(@MessageId, @ChannelId, @MemberId, @SenderId, @OriginalMid)", new { MessageId = messageId, ChannelId = channelId, MemberId = member.Id, - SenderId = senderId + SenderId = senderId, + OriginalMid = originalMessage }); _logger.Information("Stored message {Message} in channel {Channel}", messageId, channelId); @@ -213,7 +215,7 @@ namespace PluralKit { public async Task Get(ulong id) { using (var conn = await _conn.Obtain()) - return (await conn.QueryAsync("select messages.*, members.*, systems.* from messages, members, systems where mid = @Id and messages.member = members.id and systems.id = members.system", (msg, member, system) => new StoredMessage + return (await conn.QueryAsync("select messages.*, members.*, systems.* from messages, members, systems where (mid = @Id or original_mid = @Id) and messages.member = members.id and systems.id = members.system", (msg, member, system) => new StoredMessage { Message = msg, System = system, diff --git a/PluralKit.Core/db_schema.sql b/PluralKit.Core/db_schema.sql index d755a12c..97063f50 100644 --- a/PluralKit.Core/db_schema.sql +++ b/PluralKit.Core/db_schema.sql @@ -35,10 +35,11 @@ create table if not exists accounts create table if not exists messages ( - mid bigint primary key, - channel bigint not null, - member serial not null references members (id) on delete cascade, - sender bigint not null + mid bigint primary key, + channel bigint not null, + member serial not null references members (id) on delete cascade, + sender bigint not null, + original_mid bigint ); create table if not exists switches