Convert event destructuring

This commit is contained in:
Ske
2021-01-31 14:55:57 +01:00
parent 5a52abed77
commit 227d68a2a4
3 changed files with 25 additions and 30 deletions

View File

@@ -1,19 +1,19 @@
using System.Collections.Generic;
using DSharpPlus.Entities;
using DSharpPlus.EventArgs;
using Myriad.Gateway;
using Serilog.Core;
using Serilog.Events;
namespace PluralKit.Bot
{
// This class is unused and commented out in Init.cs - it's here from before the lib conversion. Is it needed??
public class EventDestructuring: IDestructuringPolicy
{
public bool TryDestructure(object value, ILogEventPropertyValueFactory propertyValueFactory,
out LogEventPropertyValue result)
{
if (!(value is DiscordEventArgs dea))
if (!(value is IGatewayEvent evt))
{
result = null;
return false;
@@ -21,30 +21,30 @@ namespace PluralKit.Bot
var props = new List<LogEventProperty>
{
new LogEventProperty("Type", new ScalarValue(dea.EventType())),
new("Type", new ScalarValue(evt.EventType())),
};
void AddMessage(DiscordMessage msg)
void AddMessage(ulong id, ulong channelId, ulong? guildId, ulong? author)
{
props.Add(new LogEventProperty("MessageId", new ScalarValue(msg.Id)));
props.Add(new LogEventProperty("ChannelId", new ScalarValue(msg.ChannelId)));
props.Add(new LogEventProperty("GuildId", new ScalarValue(msg.Channel.GuildId)));
props.Add(new LogEventProperty("MessageId", new ScalarValue(id)));
props.Add(new LogEventProperty("ChannelId", new ScalarValue(channelId)));
props.Add(new LogEventProperty("GuildId", new ScalarValue(guildId ?? 0)));
if (msg.Author != null)
props.Add(new LogEventProperty("AuthorId", new ScalarValue(msg.Author.Id)));
if (author != null)
props.Add(new LogEventProperty("AuthorId", new ScalarValue(author)));
}
if (value is MessageCreateEventArgs mc)
AddMessage(mc.Message);
else if (value is MessageUpdateEventArgs mu)
AddMessage(mu.Message);
else if (value is MessageDeleteEventArgs md)
AddMessage(md.Message);
else if (value is MessageReactionAddEventArgs mra)
if (value is MessageCreateEvent mc)
AddMessage(mc.Id, mc.ChannelId, mc.GuildId, mc.Author.Id);
else if (value is MessageUpdateEvent mu)
AddMessage(mu.Id, mu.ChannelId, mu.GuildId.Value, mu.Author.Value?.Id);
else if (value is MessageDeleteEvent md)
AddMessage(md.Id, md.ChannelId, md.GuildId, null);
else if (value is MessageReactionAddEvent mra)
{
AddMessage(mra.Message);
props.Add(new LogEventProperty("ReactingUserId", new ScalarValue(mra.User.Id)));
props.Add(new LogEventProperty("Emoji", new ScalarValue(mra.Emoji.GetDiscordName())));
AddMessage(mra.MessageId, mra.ChannelId, mra.GuildId, null);
props.Add(new LogEventProperty("ReactingUserId", new ScalarValue(mra.Emoji)));
props.Add(new LogEventProperty("Emoji", new ScalarValue(mra.Emoji.Name)));
}
// Want shard last, just for visual reasons