为什么我的机器人 discord.net 总是出现 "Bad Request: 400" 错误?

Why do I keep getting a "Bad Request: 400" error on my bot with discord.net?

我正在使用 c# 和一个名为 DSharpPlus 的库制作一个 discord 机器人(如果有帮助的话),我正在尝试发出清除命令,但我一直收到

Bad Request: 400

错误,我不知道如何解决。我试过在网上寻找它,但找不到任何东西,而且我也是 C# 的新手,并且已经做了很多工作,以至于我无法回头。这是我的代码:

    [Command("purge")]
    [Description("Deleted A Certain Number Of Messages. (Max = 1000)")]
    [RequireBotPermissions(Permissions.Administrator)]
    [RequireUserPermissions(Permissions.Administrator)]
    public async Task Purge(CommandContext ctx, [Description("Number Of Messages To Be Deleted.")]int num)
    {
        int limit = 1000;
        
        if (num > limit)
            await ctx.Channel.SendMessageAsync("Too Many Arguments. Limit: 1000").ConfigureAwait(false);

        await ctx.Message.DeleteAsync().ConfigureAwait(false);

        var messages = await ctx.Channel.GetMessagesAsync(num).ConfigureAwait(false);

        await ctx.Channel.DeleteMessagesAsync(messages).ConfigureAwait(false);

        var embed = new DiscordEmbedBuilder
        {
            Title = $"{num} Messages Deleted!",
            Color = DiscordColor.Aquamarine
        };
        var deletedMessage = await ctx.Channel.SendMessageAsync(embed: embed).ConfigureAwait(false);
        Thread.Sleep(4300);
        await ctx.Channel.DeleteMessageAsync(deletedMessage).ConfigureAwait(false);
    }

如果它看起来很糟糕,我又是 C# 的新手,所以我了解的不多。请帮忙,因为我已经尝试了很多次,所以我现在只需要寻求帮助。谢谢!

编辑:基本上命令剂量确实有效但是它给了我一个错误 Bad Request: 400 我真的不知道为什么。

以下是我不断得到的,如果这也有帮助的话:

Nitro7256 tried executing 'purge' but it errorred: DSharpPlus.Exceptions.BadRequestException: Bad request: 400

(派对迟到)

如果您阅读了 discord 文档,它会告诉您返回 400 错误的原因。

  1. 批量删除的邮件限制为 100 条,而不是 1,000 条。获取消息也是如此

  2. 如果消息太旧,它也会return一个400错误。

从批量删除文档本身:

This endpoint will not delete messages older than 2 weeks, and will fail with a 400 BAD REQUEST if any message provided is older than that or if any duplicate message IDs are provided.

获取消息文档:https://discord.com/developers/docs/resources/channel#get-channel-messages

批量删除文档:https://discord.com/developers/docs/resources/channel#bulk-delete-messages

显然您不需要手动发送请求。这只是向您展示 400 错误响应的原因。

旁注:

使用 await Task.Delay(4300) 而不是 Thread.Sleep(4300)Thread.Sleep() 阻塞主线程。