我正在尝试为我的eval
项目创建一个discord.js
命令,但它正在执行应做的操作,但提示无法发送空消息。
这是我的命令代码:
case 'eval':
const result = eval(message.content.replace('>eval ', ''));
message.channel.send(result);
break;
答案 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)
”