From 1eb30329c6171878707dd6aeb9da2d2197646b31 Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 27 Jun 2024 10:14:23 +0200 Subject: [PATCH] Pulls out chain events sender --- Tools/BiblioTech/Rewards/ChainEventsSender.cs | 40 +++++++++++++++++++ Tools/BiblioTech/Rewards/RoleDriver.cs | 29 ++------------ 2 files changed, 43 insertions(+), 26 deletions(-) create mode 100644 Tools/BiblioTech/Rewards/ChainEventsSender.cs diff --git a/Tools/BiblioTech/Rewards/ChainEventsSender.cs b/Tools/BiblioTech/Rewards/ChainEventsSender.cs new file mode 100644 index 00000000..2e1e9ec7 --- /dev/null +++ b/Tools/BiblioTech/Rewards/ChainEventsSender.cs @@ -0,0 +1,40 @@ +using Discord.WebSocket; +using Logging; + +namespace BiblioTech.Rewards +{ + public class ChainEventsSender + { + private readonly ILog log; + private SocketTextChannel? eventsChannel; + + public ChainEventsSender(ILog log, SocketTextChannel? eventsChannel) + { + this.log = log; + this.eventsChannel = eventsChannel; + } + + public async Task ProcessChainEvents(string[] eventsOverview) + { + if (eventsChannel == null || eventsOverview == null || !eventsOverview.Any()) return; + try + { + await Task.Run(async () => + { + foreach (var e in eventsOverview) + { + if (!string.IsNullOrEmpty(e)) + { + await eventsChannel.SendMessageAsync(e); + await Task.Delay(3000); + } + } + }); + } + catch (Exception ex) + { + log.Error("Failed to process chain events: " + ex); + } + } + } +} diff --git a/Tools/BiblioTech/Rewards/RoleDriver.cs b/Tools/BiblioTech/Rewards/RoleDriver.cs index c7173c10..6f1819d3 100644 --- a/Tools/BiblioTech/Rewards/RoleDriver.cs +++ b/Tools/BiblioTech/Rewards/RoleDriver.cs @@ -11,7 +11,7 @@ namespace BiblioTech.Rewards private readonly DiscordSocketClient client; private readonly ILog log; private readonly SocketTextChannel? rewardsChannel; - private readonly SocketTextChannel? eventsChannel; + private readonly ChainEventsSender eventsSender; private readonly RewardRepo repo = new RewardRepo(); public RoleDriver(DiscordSocketClient client, ILog log) @@ -19,7 +19,7 @@ namespace BiblioTech.Rewards this.client = client; this.log = log; rewardsChannel = GetChannel(Program.Config.RewardsChannelId); - eventsChannel = GetChannel(Program.Config.ChainEventsChannelId); + eventsSender = new ChainEventsSender(log, GetChannel(Program.Config.ChainEventsChannelId)); } public async Task GiveRewards(GiveRewardsCommand rewards) @@ -31,7 +31,7 @@ namespace BiblioTech.Rewards await ProcessRewards(rewards); } - await ProcessChainEvents(rewards.EventsOverview); + await eventsSender.ProcessChainEvents(rewards.EventsOverview); } private async Task ProcessRewards(GiveRewardsCommand rewards) @@ -60,29 +60,6 @@ namespace BiblioTech.Rewards return GetGuild().TextChannels.SingleOrDefault(c => c.Id == id); } - private async Task ProcessChainEvents(string[] eventsOverview) - { - if (eventsChannel == null || eventsOverview == null || !eventsOverview.Any()) return; - try - { - await Task.Run(async () => - { - foreach (var e in eventsOverview) - { - if (!string.IsNullOrEmpty(e)) - { - await eventsChannel.SendMessageAsync(e); - await Task.Delay(3000); - } - } - }); - } - catch (Exception ex) - { - log.Error("Failed to process chain events: " + ex); - } - } - private async Task> LoadAllUsers(SocketGuild guild) { log.Log("Loading all users..");