forked from EllieBotDevs/elliebot
Changed .leaveunkeptservers again to only accept startShardId, it will loop through the shards and execute clean on them every 2250 seconds (assuming shards are almost full). Delay is fixed at 1 second as that is the discord ratelimit
This commit is contained in:
parent
45d9fa08db
commit
b752633e83
4 changed files with 24 additions and 16 deletions
|
@ -8,9 +8,13 @@ public partial class Administration
|
|||
public partial class CleanupCommands : CleanupModuleBase
|
||||
{
|
||||
private readonly ICleanupService _svc;
|
||||
private readonly IBotCredsProvider _creds;
|
||||
|
||||
public CleanupCommands(ICleanupService svc)
|
||||
=> _svc = svc;
|
||||
public CleanupCommands(ICleanupService svc, IBotCredsProvider creds)
|
||||
{
|
||||
_svc = svc;
|
||||
_creds = creds;
|
||||
}
|
||||
|
||||
[Cmd]
|
||||
[OwnerOnly]
|
||||
|
@ -42,7 +46,7 @@ public partial class Administration
|
|||
|
||||
[Cmd]
|
||||
[OwnerOnly]
|
||||
public async Task LeaveUnkeptServers(int shardId, int delay = 1000)
|
||||
public async Task LeaveUnkeptServers(int startShardId)
|
||||
{
|
||||
var keptGuildCount = await _svc.GetKeptGuildCount();
|
||||
|
||||
|
@ -58,7 +62,12 @@ public partial class Administration
|
|||
if (!response)
|
||||
return;
|
||||
|
||||
await _svc.LeaveUnkeptServers(shardId, delay);
|
||||
for (var i = startShardId; i < _creds.GetCreds().TotalShards; i++)
|
||||
{
|
||||
await _svc.LeaveUnkeptServers(startShardId);
|
||||
await Task.Delay(2250 * 1000);
|
||||
}
|
||||
|
||||
await ctx.OkAsync();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ public sealed class CleanupService : ICleanupService, IReadyExecutor, IEService
|
|||
private TypedKey<KeepReport> _cleanupReportKey = new("cleanup:report");
|
||||
private TypedKey<bool> _cleanupTriggerKey = new("cleanup:trigger");
|
||||
|
||||
private TypedKey<(int, int)> _keepTriggerKey = new("keep:trigger");
|
||||
private TypedKey<int> _keepTriggerKey = new("keep:trigger");
|
||||
|
||||
private readonly IPubSub _pubSub;
|
||||
private readonly DiscordSocketClient _client;
|
||||
|
@ -45,10 +45,8 @@ public sealed class CleanupService : ICleanupService, IReadyExecutor, IEService
|
|||
|
||||
private bool keepTriggered = false;
|
||||
|
||||
private async ValueTask InternalTriggerKeep((int, int) data)
|
||||
private async ValueTask InternalTriggerKeep(int shardId)
|
||||
{
|
||||
var (shardId, delay) = data;
|
||||
|
||||
if (_client.ShardId != shardId)
|
||||
return;
|
||||
|
||||
|
@ -74,13 +72,16 @@ public sealed class CleanupService : ICleanupService, IReadyExecutor, IEService
|
|||
dontDelete = dontDeleteList.ToHashSet();
|
||||
}
|
||||
|
||||
Log.Information("Leaving {RemainingCount} guilds every {Delay} seconds, {DontDeleteCount} will remain", allGuildIds.Length - dontDelete.Count, delay, dontDelete.Count);
|
||||
Log.Information("Leaving {RemainingCount} guilds every {Delay} seconds, {DontDeleteCount} will remain",
|
||||
allGuildIds.Length - dontDelete.Count,
|
||||
shardId,
|
||||
dontDelete.Count);
|
||||
foreach (var guildId in allGuildIds)
|
||||
{
|
||||
if (dontDelete.Contains(guildId))
|
||||
continue;
|
||||
|
||||
await Task.Delay(delay);
|
||||
await Task.Delay(1016);
|
||||
|
||||
SocketGuild? guild = null;
|
||||
try
|
||||
|
@ -236,8 +237,8 @@ public sealed class CleanupService : ICleanupService, IReadyExecutor, IEService
|
|||
return await table.CountAsync();
|
||||
}
|
||||
|
||||
public async Task LeaveUnkeptServers(int shardId, int delay)
|
||||
=> await _pubSub.Pub(_keepTriggerKey, (shardId, delay));
|
||||
public async Task LeaveUnkeptServers(int shardId)
|
||||
=> await _pubSub.Pub(_keepTriggerKey, shardId);
|
||||
|
||||
private ValueTask OnKeepReport(KeepReport report)
|
||||
{
|
||||
|
|
|
@ -5,5 +5,5 @@ public interface ICleanupService
|
|||
Task<KeepResult?> DeleteMissingGuildDataAsync();
|
||||
Task<bool> KeepGuild(ulong guildId);
|
||||
Task<int> GetKeptGuildCount();
|
||||
Task LeaveUnkeptServers(int shardId, int delay);
|
||||
Task LeaveUnkeptServers(int shardId);
|
||||
}
|
|
@ -4563,6 +4563,4 @@ leaveunkeptservers:
|
|||
- ''
|
||||
params:
|
||||
- shardId:
|
||||
desc: "Shard id from which to start leaving unkept servers."
|
||||
- delay:
|
||||
desc: "Delay in miliseconds between leaves"
|
||||
desc: "Shard id from which to start leaving unkept servers."
|
Reference in a new issue