为什么我的机器人 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 错误的原因。
批量删除的邮件限制为 100 条,而不是 1,000 条。获取消息也是如此
如果消息太旧,它也会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()
阻塞主线程。
我正在使用 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 错误的原因。
批量删除的邮件限制为 100 条,而不是 1,000 条。获取消息也是如此
如果消息太旧,它也会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()
阻塞主线程。