From c68678c740250dd523d49277e267501f27758c53 Mon Sep 17 00:00:00 2001 From: 13xforever Date: Tue, 13 Apr 2021 16:01:19 +0500 Subject: [PATCH] support !analyze with reply link partially implements #705 --- CompatBot/Commands/Moderation.cs | 6 +++++- CompatBot/EventHandlers/LogParsingHandler.cs | 7 +++++-- .../Utils/Extensions/DiscordMessageExtensions.cs | 13 +++++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/CompatBot/Commands/Moderation.cs b/CompatBot/Commands/Moderation.cs index 252b3aad..7ee19dc9 100644 --- a/CompatBot/Commands/Moderation.cs +++ b/CompatBot/Commands/Moderation.cs @@ -90,7 +90,11 @@ namespace CompatBot.Commands { try { - LogParsingHandler.EnqueueLogProcessing(ctx.Client, ctx.Channel, ctx.Message, ctx.Member, true, true); + if (ctx.Message.Attachments.Any()) + LogParsingHandler.EnqueueLogProcessing(ctx.Client, ctx.Channel, ctx.Message, ctx.Member, true, true); + else if (ctx.Message.ReferencedMessage is {} refMsg && refMsg.Attachments.Any()) + LogParsingHandler.EnqueueLogProcessing(ctx.Client, ctx.Channel, refMsg, ctx.Member, true, true); + } catch (Exception e) { diff --git a/CompatBot/EventHandlers/LogParsingHandler.cs b/CompatBot/EventHandlers/LogParsingHandler.cs index 44d9e4b8..691194ac 100644 --- a/CompatBot/EventHandlers/LogParsingHandler.cs +++ b/CompatBot/EventHandlers/LogParsingHandler.cs @@ -101,7 +101,10 @@ namespace CompatBot.EventHandlers { Config.Log.Debug($">>>>>>> {message.Id % 100} Parsing log '{source.FileName}' from {message.Author.Username}#{message.Author.Discriminator} ({message.Author.Id}) using {source.GetType().Name} ({source.SourceFileSize} bytes)..."); var analyzingProgressEmbed = GetAnalyzingMsgEmbed(client); - botMsg = await channel.SendMessageAsync(embed: analyzingProgressEmbed.AddAuthor(client, message, source)).ConfigureAwait(false); + var msgBuilder = new DiscordMessageBuilder() + .WithEmbed(analyzingProgressEmbed.AddAuthor(client, message, source)) + .WithReply(message.Id); + botMsg = await channel.SendMessageAsync(msgBuilder).ConfigureAwait(false); parsedLog = true; LogParseState? result = null, tmpResult; @@ -238,7 +241,7 @@ namespace CompatBot.EventHandlers } botMsg = await botMsg.UpdateOrCreateMessageAsync(channel, - requester == null ? null : $"Analyzed log from {client.GetMember(channel.Guild, message.Author)?.GetUsernameWithNickname()} by request from {requester.Mention}:", + //requester == null ? null : $"Analyzed log from {client.GetMember(channel.Guild, message.Author)?.GetUsernameWithNickname()} by request from {requester.Mention}:", embed: await result.AsEmbedAsync(client, message, source).ConfigureAwait(false) ).ConfigureAwait(false); } diff --git a/CompatBot/Utils/Extensions/DiscordMessageExtensions.cs b/CompatBot/Utils/Extensions/DiscordMessageExtensions.cs index baa27c6a..b9b5183c 100644 --- a/CompatBot/Utils/Extensions/DiscordMessageExtensions.cs +++ b/CompatBot/Utils/Extensions/DiscordMessageExtensions.cs @@ -11,15 +11,20 @@ namespace CompatBot.Utils { public static class DiscordMessageExtensions { - public static async Task UpdateOrCreateMessageAsync(this DiscordMessage? message, DiscordChannel channel, string? content = null, DiscordEmbed? embed = null) + public static async Task UpdateOrCreateMessageAsync(this DiscordMessage? botMsg, DiscordChannel channel, string? content = null, DiscordEmbed? embed = null, DiscordMessage? refMsg = null) { Exception? lastException = null; for (var i = 0; i<3; i++) try { - if (message == null) + if (botMsg == null) { - var newMsg = await channel.SendMessageAsync(content, embed).ConfigureAwait(false); + var msgBuilder = new DiscordMessageBuilder() + .WithContent(content) + .WithEmbed(embed); + if (refMsg is not null) + msgBuilder.WithReply(refMsg.Id); + var newMsg = await channel.SendMessageAsync(msgBuilder).ConfigureAwait(false); #warning Ugly hack, needs proper fix in upstream, but they are not enthused to do so if (newMsg.Channel is null) { @@ -30,7 +35,7 @@ namespace CompatBot.Utils } return newMsg; } - return await message.ModifyAsync(content, embed).ConfigureAwait(false); + return await botMsg.ModifyAsync(content, embed).ConfigureAwait(false); } catch (Exception e) {