This commit is contained in:
Master Kwoth 2017-06-17 13:54:21 +02:00
parent 936ee30e1f
commit 77754c7dec

View File

@ -28,7 +28,7 @@ namespace NadekoBot.Services.Administration
{ {
IMessage[] msgs; IMessage[] msgs;
IMessage lastMessage = null; IMessage lastMessage = null;
msgs = (await channel.GetMessagesAsync(amount > 100 ? 100 : amount).Flatten()).Where(predicate).ToArray(); msgs = (await channel.GetMessagesAsync().Flatten()).Where(predicate).Take(amount).ToArray();
while (amount > 0 && msgs.Any()) while (amount > 0 && msgs.Any())
{ {
lastMessage = msgs[msgs.Length - 1]; lastMessage = msgs[msgs.Length - 1];
@ -50,14 +50,16 @@ namespace NadekoBot.Services.Administration
foreach (var group in singleDeletable.GroupBy(x => ++i / (singleDeletable.Count / 5))) foreach (var group in singleDeletable.GroupBy(x => ++i / (singleDeletable.Count / 5)))
await Task.WhenAll(Task.Delay(1000), Task.WhenAll(group.Select(x => x.DeleteAsync()))).ConfigureAwait(false); await Task.WhenAll(Task.Delay(1000), Task.WhenAll(group.Select(x => x.DeleteAsync()))).ConfigureAwait(false);
//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
amount -= 100; amount -= 100;
if(amount > 0) if(amount > 0)
msgs = (await channel.GetMessagesAsync(lastMessage, Direction.Before, amount > 100 ? 100 : amount).Flatten()).Where(predicate).ToArray(); msgs = (await channel.GetMessagesAsync(lastMessage, Direction.Before).Flatten()).Where(predicate).Take(amount).ToArray();
} }
} }
catch (Exception ex) catch
{ {
//ignore
} }
finally finally
{ {