Cleaned up MessageCache slightly
This commit is contained in:
parent
7f22da5a4e
commit
2b56dab0e3
1 changed files with 17 additions and 13 deletions
|
@ -19,6 +19,8 @@ namespace Noikoio.RegexBot.Module.ModLogs
|
||||||
private readonly AsyncLogger _outLog;
|
private readonly AsyncLogger _outLog;
|
||||||
private readonly Func<ulong, object> _outGetConfig;
|
private readonly Func<ulong, object> _outGetConfig;
|
||||||
|
|
||||||
|
// TODO: How to clear the cache after a time? Can't hold on to this forever.
|
||||||
|
|
||||||
public MessageCache(DiscordSocketClient client, AsyncLogger logger, Func<ulong, object> getConfFunc)
|
public MessageCache(DiscordSocketClient client, AsyncLogger logger, Func<ulong, object> getConfFunc)
|
||||||
{
|
{
|
||||||
_dClient = client;
|
_dClient = client;
|
||||||
|
@ -55,8 +57,8 @@ namespace Noikoio.RegexBot.Module.ModLogs
|
||||||
}
|
}
|
||||||
else return; // probably unnecessary?
|
else return; // probably unnecessary?
|
||||||
|
|
||||||
// Once an edited message is cached, the original message contents are discarded.
|
// Once an edited message is cached, the original message contents are lost.
|
||||||
// This is the only time to report it.
|
// This is the only time available to report it.
|
||||||
await ProcessReportMessage(false, before.Id, channel, after.Content);
|
await ProcessReportMessage(false, before.Id, channel, after.Content);
|
||||||
|
|
||||||
await AddOrUpdateCacheItemAsync(after);
|
await AddOrUpdateCacheItemAsync(after);
|
||||||
|
@ -81,11 +83,14 @@ namespace Noikoio.RegexBot.Module.ModLogs
|
||||||
}
|
}
|
||||||
else return;
|
else return;
|
||||||
|
|
||||||
// Check if enabled before doing anything else
|
// Check if this feature is enabled before doing anything else.
|
||||||
var rptTarget = _outGetConfig(guildId) as ConfigItem.EntityName?;
|
var rptTarget = _outGetConfig(guildId) as ConfigItem.EntityName?;
|
||||||
if (!rptTarget.HasValue) return;
|
if (!rptTarget.HasValue) return;
|
||||||
|
|
||||||
// Regardless of delete or edit, it is necessary to get database information.
|
// Ignore if it's a message being deleted withing the reporting channel.
|
||||||
|
if (isDelete && rptTarget.Value.Id.Value == ch.Id) return;
|
||||||
|
|
||||||
|
// Regardless of delete or edit, it is necessary to get the equivalent database information.
|
||||||
EntityCache.CacheUser ucd = null;
|
EntityCache.CacheUser ucd = null;
|
||||||
ulong userId;
|
ulong userId;
|
||||||
string cacheMsg;
|
string cacheMsg;
|
||||||
|
@ -123,7 +128,6 @@ namespace Noikoio.RegexBot.Module.ModLogs
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find target channel, prepare and send out message
|
// Find target channel, prepare and send out message
|
||||||
var em = CreateReportEmbed(isDelete, ucd, messageId, ch, (cacheMsg, editMsg));
|
|
||||||
var rptTargetChannel = _dClient.GetGuild(guildId)?.GetTextChannel(rptTarget.Value.Id.Value);
|
var rptTargetChannel = _dClient.GetGuild(guildId)?.GetTextChannel(rptTarget.Value.Id.Value);
|
||||||
if (rptTargetChannel == null)
|
if (rptTargetChannel == null)
|
||||||
{
|
{
|
||||||
|
@ -131,6 +135,7 @@ namespace Noikoio.RegexBot.Module.ModLogs
|
||||||
// TODO make a more descriptive error message
|
// TODO make a more descriptive error message
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
var em = CreateReportEmbed(isDelete, ucd, messageId, ch, (cacheMsg, editMsg));
|
||||||
await rptTargetChannel.SendMessageAsync("", embed: em);
|
await rptTargetChannel.SendMessageAsync("", embed: em);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +144,7 @@ namespace Noikoio.RegexBot.Module.ModLogs
|
||||||
private EmbedBuilder CreateReportEmbed(
|
private EmbedBuilder CreateReportEmbed(
|
||||||
bool isDelete,
|
bool isDelete,
|
||||||
EntityCache.CacheUser ucd, ulong messageId, ISocketMessageChannel chInfo,
|
EntityCache.CacheUser ucd, ulong messageId, ISocketMessageChannel chInfo,
|
||||||
(string, string) content) // tuple: Item1 = cached content. Item2 = after-edit message
|
(string, string) content) // Item1 = cached content. Item2 = after-edit message (null if isDelete)
|
||||||
{
|
{
|
||||||
string msgCached = content.Item1;
|
string msgCached = content.Item1;
|
||||||
string msgPostEdit = content.Item2;
|
string msgPostEdit = content.Item2;
|
||||||
|
@ -154,7 +159,7 @@ namespace Noikoio.RegexBot.Module.ModLogs
|
||||||
+ content.Item2.Substring(0, ReportCutoffLength);
|
+ content.Item2.Substring(0, ReportCutoffLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note: Value for ucb is null if cached user could not be determined
|
// Note: Value for ucb can be null if cached user could not be determined.
|
||||||
var eb = new EmbedBuilder
|
var eb = new EmbedBuilder
|
||||||
{
|
{
|
||||||
Author = new EmbedAuthorBuilder()
|
Author = new EmbedAuthorBuilder()
|
||||||
|
@ -164,7 +169,7 @@ namespace Noikoio.RegexBot.Module.ModLogs
|
||||||
Fields = new System.Collections.Generic.List<EmbedFieldBuilder>(),
|
Fields = new System.Collections.Generic.List<EmbedFieldBuilder>(),
|
||||||
Footer = new EmbedFooterBuilder()
|
Footer = new EmbedFooterBuilder()
|
||||||
{
|
{
|
||||||
Text = (ucd == null ? "UID: Unknown" : $"UID: {ucd.UserId}"),
|
Text = "User ID: " + ucd?.UserId.ToString() ?? "Unknown",
|
||||||
IconUrl = _dClient.CurrentUser.GetAvatarUrl()
|
IconUrl = _dClient.CurrentUser.GetAvatarUrl()
|
||||||
},
|
},
|
||||||
Timestamp = DateTimeOffset.UtcNow
|
Timestamp = DateTimeOffset.UtcNow
|
||||||
|
@ -172,14 +177,14 @@ namespace Noikoio.RegexBot.Module.ModLogs
|
||||||
|
|
||||||
if (isDelete)
|
if (isDelete)
|
||||||
{
|
{
|
||||||
eb.Author.Name = "Message deleted by ";
|
eb.Author.Name = "Deleted message by ";
|
||||||
eb.Color = new Color(0x9b9b9b);
|
eb.Color = new Color(0xff7373);
|
||||||
eb.Description = msgCached;
|
eb.Description = msgCached;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
eb.Author.Name = "Message edited by ";
|
eb.Author.Name = "Edited message by ";
|
||||||
eb.Color = new Color(0x837813);
|
eb.Color = new Color(0xffcc40);
|
||||||
eb.Fields.Add(new EmbedFieldBuilder()
|
eb.Fields.Add(new EmbedFieldBuilder()
|
||||||
{
|
{
|
||||||
Name = "Before",
|
Name = "Before",
|
||||||
|
@ -206,7 +211,6 @@ namespace Noikoio.RegexBot.Module.ModLogs
|
||||||
|
|
||||||
return eb;
|
return eb;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Database storage/retrieval
|
#region Database storage/retrieval
|
||||||
|
|
Loading…
Reference in a new issue