Discord API Error: Cannot send an empty message

Discord API Error: Cannot send an empty message

我正在编写一个简单的 discord 机器人,它只是从列表中随机选择一个响应,但我将 运行 保留在同一个 Discord API 错误中。

这是我的代码。

client.on('messageCreate', message => {
const responses = [['Yehaw', 'Yehaw!!', 'Yahee', 'Cowboy shit']];
let randomNumber = Math.floor(Math.random() * Math.floor(responses.length));
let randomMessage = responses[randomNumber];
if (message.author.bot) return;

if (message.content.includes ('Yehaw'))
    message.channel.send(randomMessage);
});

这是我的错误信息

        DiscordAPIError: Cannot send an empty message
at RequestHandler.execute (C:\Users\User\Desktop\DiscordBot\node_modules\discord.js\src\rest\RequestHandler.js:350:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (C:\Users\User\Desktop\DiscordBot\node_modules\discord.js\src\rest\RequestHandler.js:51:14)
at async TextChannel.send (C:\Users\User\Desktop\DiscordBot\node_modules\discord.js\src\structures\interfaces\TextBasedChannel.js:176:15) {

方法:'post', 路径:'/channels/976509969199407185/messages', 代码:50006, http状态:400,

我尝试了几种消息选择方法的变体,但它们都抛出相同的错误

您收到此错误的原因是您尝试发送数组而不是文本。如果您仔细查看您的代码,您会注意到实际的响应数组位于另一个数组内,因此当您随机选择一个时,它将始终是完整数组而不是其中的一个响应。所以 randomMessage 将永远是这个数组 => ["Yehaw", "Yehaw!!", "Yahee", "Cowboy shit"]discord.js 无法将数组作为文本发送,这就是您收到此错误的原因。所以你所要做的就是删除多余的方括号,这样你的最终代码可能看起来像这样:

client.on("messageCreate", (message) => {
  const responses = ["Yehaw", "Yehaw!!", "Yahee", "Cowboy shit"];
  let randomNumber = Math.floor(Math.random() * Math.floor(responses.length));
  let randomMessage = responses[randomNumber];
  if (message.author.bot) return;

  if (message.content.includes("Yehaw")) message.channel.send(randomMessage);
});