- Possible small fix for .prune ratelimiting

- Use .WhenAll extension instead of Task.WhenAll in a few more places
This commit is contained in:
Kwoth
2022-01-03 04:31:56 +01:00
parent df3e60b61f
commit 21bef1a98e
4 changed files with 6 additions and 7 deletions

View File

@@ -2,6 +2,7 @@ using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using NadekoBot.Extensions;
using NadekoBot.Services; using NadekoBot.Services;
using NUnit.Framework; using NUnit.Framework;
@@ -62,8 +63,8 @@ namespace NadekoBot.Tests
_grouper.CreateOrAdd(0, 5); _grouper.CreateOrAdd(0, 5);
// add 15 items // add 15 items
await Task.WhenAll(Enumerable.Range(10, 15) await Enumerable.Range(10, 15)
.Select(x => Task.Run(() => _grouper.CreateOrAdd(0, x)))); .Select(x => Task.Run(() => _grouper.CreateOrAdd(0, x))).WhenAll();
// get 5 at most // get 5 at most
_grouper.ClearGroup(0, 5, out var items); _grouper.ClearGroup(0, 5, out var items);

View File

@@ -46,7 +46,7 @@ public class PruneService : INService
await Task.WhenAll(Task.Delay(1000), channel.DeleteMessagesAsync(bulkDeletable)); await Task.WhenAll(Task.Delay(1000), channel.DeleteMessagesAsync(bulkDeletable));
foreach (var group in singleDeletable.Chunk(5)) foreach (var group in singleDeletable.Chunk(5))
await Task.WhenAll(Task.Delay(1000), group.Select(x => x.DeleteAsync()).WhenAll()); await Task.WhenAll(Task.Delay(5000), group.Select(x => x.DeleteAsync()).WhenAll());
//this isn't good, because this still work as if i want to remove only specific user's messages from the last //this isn't good, because this still work as if i want to remove only specific user's messages from the last
//100 messages, Maybe this needs to be reduced by msgs.Length instead of 100 //100 messages, Maybe this needs to be reduced by msgs.Length instead of 100

View File

@@ -170,14 +170,14 @@ public sealed class SelfService : ILateExecutor, IReadyExecutor, INService
private async Task LoadOwnerChannels() private async Task LoadOwnerChannels()
{ {
var channels = await Task.WhenAll(_creds.OwnerIds.Select(id => var channels = await _creds.OwnerIds.Select(id =>
{ {
var user = _client.GetUser(id); var user = _client.GetUser(id);
if (user is null) if (user is null)
return Task.FromResult<IDMChannel>(null); return Task.FromResult<IDMChannel>(null);
return user.CreateDMChannelAsync(); return user.CreateDMChannelAsync();
})); }).WhenAll();
ownerChannels = channels.Where(x => x is not null) ownerChannels = channels.Where(x => x is not null)
.ToDictionary(x => x.Recipient.Id, x => x) .ToDictionary(x => x.Recipient.Id, x => x)

View File

@@ -88,8 +88,6 @@ public static class EnumerableExtensions
where T : class, IIndexed where T : class, IIndexed
=> new(enumerable); => new(enumerable);
// todo use this extension instead of Task.WhenAll
/// <summary> /// <summary>
/// Creates a task that will complete when all of the <see cref="Task{TResult}" /> objects in an enumerable /// Creates a task that will complete when all of the <see cref="Task{TResult}" /> objects in an enumerable
/// collection have completed /// collection have completed