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

@ -120,7 +120,8 @@ namespace PluralKit.Bot
builder.RegisterModule(new ConfigModule<BotConfig>("Bot")); builder.RegisterModule(new ConfigModule<BotConfig>("Bot"));
builder.RegisterModule(new LoggingModule("bot", cfg => builder.RegisterModule(new LoggingModule("bot", cfg =>
{ {
cfg.Destructure.With<EventDestructuring>(); // TODO: do we need this?
// cfg.Destructure.With<EventDestructuring>();
})); }));
builder.RegisterModule(new MetricsModule()); builder.RegisterModule(new MetricsModule());
builder.RegisterModule<DataStoreModule>(); builder.RegisterModule<DataStoreModule>();

View File

@ -1,19 +1,19 @@
using System.Collections.Generic; using System.Collections.Generic;
using DSharpPlus.Entities; using Myriad.Gateway;
using DSharpPlus.EventArgs;
using Serilog.Core; using Serilog.Core;
using Serilog.Events; using Serilog.Events;
namespace PluralKit.Bot 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 class EventDestructuring: IDestructuringPolicy
{ {
public bool TryDestructure(object value, ILogEventPropertyValueFactory propertyValueFactory, public bool TryDestructure(object value, ILogEventPropertyValueFactory propertyValueFactory,
out LogEventPropertyValue result) out LogEventPropertyValue result)
{ {
if (!(value is DiscordEventArgs dea)) if (!(value is IGatewayEvent evt))
{ {
result = null; result = null;
return false; return false;
@ -21,30 +21,30 @@ namespace PluralKit.Bot
var props = new List<LogEventProperty> 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("MessageId", new ScalarValue(id)));
props.Add(new LogEventProperty("ChannelId", new ScalarValue(msg.ChannelId))); props.Add(new LogEventProperty("ChannelId", new ScalarValue(channelId)));
props.Add(new LogEventProperty("GuildId", new ScalarValue(msg.Channel.GuildId))); props.Add(new LogEventProperty("GuildId", new ScalarValue(guildId ?? 0)));
if (msg.Author != null) if (author != null)
props.Add(new LogEventProperty("AuthorId", new ScalarValue(msg.Author.Id))); props.Add(new LogEventProperty("AuthorId", new ScalarValue(author)));
} }
if (value is MessageCreateEventArgs mc) if (value is MessageCreateEvent mc)
AddMessage(mc.Message); AddMessage(mc.Id, mc.ChannelId, mc.GuildId, mc.Author.Id);
else if (value is MessageUpdateEventArgs mu) else if (value is MessageUpdateEvent mu)
AddMessage(mu.Message); AddMessage(mu.Id, mu.ChannelId, mu.GuildId.Value, mu.Author.Value?.Id);
else if (value is MessageDeleteEventArgs md) else if (value is MessageDeleteEvent md)
AddMessage(md.Message); AddMessage(md.Id, md.ChannelId, md.GuildId, null);
else if (value is MessageReactionAddEventArgs mra) else if (value is MessageReactionAddEvent mra)
{ {
AddMessage(mra.Message); AddMessage(mra.MessageId, mra.ChannelId, mra.GuildId, null);
props.Add(new LogEventProperty("ReactingUserId", new ScalarValue(mra.User.Id))); props.Add(new LogEventProperty("ReactingUserId", new ScalarValue(mra.Emoji)));
props.Add(new LogEventProperty("Emoji", new ScalarValue(mra.Emoji.GetDiscordName()))); props.Add(new LogEventProperty("Emoji", new ScalarValue(mra.Emoji.Name)));
} }
// Want shard last, just for visual reasons // Want shard last, just for visual reasons

View File

@ -2,16 +2,12 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using DSharpPlus;
using DSharpPlus.Entities;
using DSharpPlus.EventArgs;
using Myriad.Builders; using Myriad.Builders;
using Myriad.Extensions; using Myriad.Extensions;
using Myriad.Gateway;
using Myriad.Rest; using Myriad.Rest;
using Myriad.Rest.Types; using Myriad.Rest.Types;
using Myriad.Types; using Myriad.Types;
@ -20,8 +16,6 @@ using NodaTime;
using PluralKit.Core; using PluralKit.Core;
using Permissions = DSharpPlus.Permissions;
namespace PluralKit.Bot namespace PluralKit.Bot
{ {
public static class DiscordUtils public static class DiscordUtils
@ -190,7 +184,7 @@ namespace PluralKit.Bot
return $"<{match.Value}>"; return $"<{match.Value}>";
}); });
public static string EventType(this DiscordEventArgs evt) => public static string EventType(this IGatewayEvent evt) =>
evt.GetType().Name.Replace("EventArgs", ""); evt.GetType().Name.Replace("Event", "");
} }
} }