Exemplo n.º 1
0
        public static async Task DeleteMessagesAsync(this IRestClient client, Snowflake channelId, IEnumerable <Snowflake> messageIds, IRestRequestOptions options = null)
        {
            if (messageIds == null)
            {
                throw new ArgumentNullException(nameof(messageIds));
            }

            var messages = messageIds.ToArray();

            if (messages.Length == 0)
            {
                return;
            }

            if (messages.Length == 1)
            {
                await client.DeleteMessageAsync(channelId, messages[0], options).ConfigureAwait(false);

                return;
            }

            if (messages.Length <= 100)
            {
                await client.InternalDeleteMessagesAsync(channelId, messages, options).ConfigureAwait(false);

                return;
            }

            var enumerator = client.EnumerateMessageDeletion(channelId, messages, options).GetAsyncEnumerator();

            await using (enumerator.ConfigureAwait(false))
            {
                // Exhaust the enumerator.
                while (await enumerator.MoveNextAsync().ConfigureAwait(false))
                {
                }
            }
        }