server-master/srcs/DiscordNotifier/Formatting/GenericDiscordEmbedLogConsumer.cs
2026-02-10 18:21:30 +01:00

32 lines
No EOL
1 KiB
C#

using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Discord;
using DiscordNotifier.Discord;
using PhoenixLib.ServiceBus;
using Plugin.PlayerLogs;
namespace DiscordNotifier.Formatting
{
public class GenericDiscordEmbedLogConsumer<T> : IMessageConsumer<T> where T : IPlayerActionLogMessage
{
private readonly IDiscordWebhookLogsService _discordWebhook;
private readonly IDiscordEmbedLogFormatter<T> _formatter;
public GenericDiscordEmbedLogConsumer(IDiscordWebhookLogsService discordWebhook, IDiscordEmbedLogFormatter<T> formatter)
{
_discordWebhook = discordWebhook;
_formatter = formatter;
}
public async Task HandleAsync(T notification, CancellationToken token)
{
if (!_formatter.TryFormat(notification, out List<EmbedBuilder> embeds))
{
return;
}
await _discordWebhook.PublishLogsEmbedded(_formatter.LogType, embeds);
}
}
}