예제 #1
0
        public static async Task DeleteMessagesAsync(ITextChannel channel, BaseDiscordClient client,
                                                     IEnumerable <ulong> messageIds, RequestOptions options)
        {
            const int BATCH_SIZE = 100;

            var msgs    = messageIds.ToArray();
            int batches = msgs.Length / BATCH_SIZE;

            for (int i = 0; i <= batches; i++)
            {
                ArraySegment <ulong> batch;
                if (i < batches)
                {
                    batch = new ArraySegment <ulong>(msgs, i * BATCH_SIZE, BATCH_SIZE);
                }
                else
                {
                    batch = new ArraySegment <ulong>(msgs, i * BATCH_SIZE, msgs.Length - batches * BATCH_SIZE);
                    if (batch.Count == 0)
                    {
                        break;
                    }
                }
                var args = new DeleteMessagesParams(batch.ToArray());
                await client.ApiClient.DeleteMessagesAsync(channel.Id, args, options).ConfigureAwait(false);
            }
        }
예제 #2
0
        public static async Task DeleteMessagesAsync(IMessageChannel channel, BaseDiscordClient client,
                                                     IEnumerable <ulong> messageIds, RequestOptions options)
        {
            var msgs = messageIds.ToArray();

            if (msgs.Length < 100)
            {
                var args = new DeleteMessagesParams(msgs);
                await client.ApiClient.DeleteMessagesAsync(channel.Id, args, options).ConfigureAwait(false);
            }
            else
            {
                var batch = new ulong[100];
                for (int i = 0; i < (msgs.Length + 99) / 100; i++)
                {
                    Array.Copy(msgs, i * 100, batch, 0, Math.Min(msgs.Length - (100 * i), 100));
                    var args = new DeleteMessagesParams(batch);
                    await client.ApiClient.DeleteMessagesAsync(channel.Id, args, options).ConfigureAwait(false);
                }
            }
        }
예제 #3
0
 public static async Task DeleteMessagesAsync(IChannel channel, BaseDiscordClient client,
                                              IEnumerable <IMessage> messages, RequestOptions options)
 {
     var args = new DeleteMessagesParams(messages.Select(x => x.Id).ToArray());
     await client.ApiClient.DeleteMessagesAsync(channel.Id, args, options).ConfigureAwait(false);
 }
예제 #4
0
        public async Task <IActionResult> DeleteMessagesAsync(Snowflake channelId, [FromBody] DeleteMessagesParams args)
        {
            args.Validate();

            return(NoContent());
        }