运行eval命令时无法发送空消息错误

时间:2020-10-10 20:08:16

标签: discord.js

我正在尝试为我的eval项目创建一个discord.js命令,但它正在执行应做的操作,但提示无法发送空消息。

这是我的命令代码:

case 'eval':
   const result = eval(message.content.replace('>eval ', ''));
   message.channel.send(result);
break;

2 个答案:

答案 0 :(得分:1)

在使用命令eval的情况下,让我们看一下您的>eval message.channel.send('hello')语句。它将运行message.channel.send('hello'),并将result设置为该代码的结果。

但是方法message.channel.send()不返回值,因此您的语句message.channel.send(result)将给您“无法发送空消息”错误,因为您将尝试发送空字符串。

换句话说,当您运行该eval命令时,正在发生以下情况:
const result = message.channel.send('hello');

如果此时要console.log(result),您会发现result是未定义的。这就是为什么下一行message.channel.send(result)向您显示“空消息”错误的原因。

要解决此问题,请尝试以下操作:
if (result && result != "") message.channel.send(result)

这只会尝试发送result(如果存在且为非空字符串)。即使并非在所有情况下都行得通,您只需要调整if语句以检查结果是否存在。

这样,如果您执行>eval message.author.id,它将向您发送包含作者ID的消息,但是如果您进行>eval message.channel.send('hello'),则将不发送空字符串,除了发送“ hello”

答案 1 :(得分:0)

“要解决此问题,请尝试以下操作: if (result && result != "") message.channel.send(result)