From 7b2adbf9bfbbc37ce76eae931fc44fab13eba0ca Mon Sep 17 00:00:00 2001 From: Toastie Date: Thu, 28 Nov 2024 01:10:50 +1300 Subject: [PATCH] new method in rotating service --- .../PlayingRotate/PlayingRotateService.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/EllieBot/Modules/Administration/PlayingRotate/PlayingRotateService.cs b/src/EllieBot/Modules/Administration/PlayingRotate/PlayingRotateService.cs index 0c9afff..6a0f2bf 100644 --- a/src/EllieBot/Modules/Administration/PlayingRotate/PlayingRotateService.cs +++ b/src/EllieBot/Modules/Administration/PlayingRotate/PlayingRotateService.cs @@ -9,7 +9,9 @@ public sealed class PlayingRotateService : IEService, IReadyExecutor { private readonly BotConfigService _bss; private readonly SelfService _selfService; + private readonly IReplacementService _repService; + // private readonly Replacer _rep; private readonly DbService _db; private readonly DiscordSocketClient _client; @@ -27,14 +29,13 @@ public sealed class PlayingRotateService : IEService, IReadyExecutor _selfService = selfService; _repService = repService; _client = client; - } public async Task OnReadyAsync() { if (_client.ShardId != 0) return; - + using var timer = new PeriodicTimer(TimeSpan.FromMinutes(1)); var index = 0; while (await timer.WaitForNextTickAsync()) @@ -57,7 +58,7 @@ public sealed class PlayingRotateService : IEService, IReadyExecutor ? rotatingStatuses[index = 0] : rotatingStatuses[index++]; - var statusText = await _repService.ReplaceAsync(playingStatus.Status, new (client: _client)); + var statusText = await _repService.ReplaceAsync(playingStatus.Status, new(client: _client)); await _selfService.SetActivityAsync(statusText, (ActivityType)playingStatus.Type); } catch (Exception ex) @@ -72,7 +73,11 @@ public sealed class PlayingRotateService : IEService, IReadyExecutor ArgumentOutOfRangeException.ThrowIfNegative(index); await using var uow = _db.GetDbContext(); - var toRemove = await uow.Set().AsQueryable().AsNoTracking().Skip(index).FirstOrDefaultAsync(); + var toRemove = await uow.Set() + .AsQueryable() + .AsNoTracking() + .Skip(index) + .FirstOrDefaultAsync(); if (toRemove is null) return null; @@ -94,6 +99,11 @@ public sealed class PlayingRotateService : IEService, IReadyExecutor await uow.SaveChangesAsync(); } + public void DisableRotatePlaying() + { + _bss.ModifyConfig(bs => { bs.RotateStatuses = false; }); + } + public bool ToggleRotatePlaying() { var enabled = false;