【发布时间】:2020-12-27 00:41:24
【问题描述】:
下面的代码是我的 discord.js message event 的全部内容,我正在使用 discord.js 以及 node-wit。当 wit 识别出包含数学表达式的消息时,它会计算该值并将其发送回给用户。
它使用JSON.stringify() 发回数据。但是,当我尝试解析它时,我记录的所有内容都只返回 undefined.
client.on('message', (message) => {
wClient
.message(message.content, {})
.then((data) => {
const response = JSON.stringify(data, ['intents', 'name', 'confidence']);
const responseParsed = JSON.parse(response);
console.log(response);
console.log(responseParsed);
if (responseParsed.name == 'Math') {
message.channel.send(eval(data));
}
})
.catch(console.error);
});
JSON.stringify() 和JSON.parse() 的控制台日志的实际响应如下:
JSON.Stringify()
{"intents":[{"name":"Math","confidence":0.9945}]}
JSON.parse()
{ intents: [ { name: 'Math', confidence: 0.9945 } ] }
【问题讨论】:
-
responseParsed没有name属性...(以及为什么要使用eval?) -
我之前尝试过,它返回
undefined。我将其改回不使用该属性,以便我可以显示它作为一个整体返回的内容。 -
wClient是什么。 -
我使用了 eval ,因为 Wit 返回的消息带有相信的意图,它实际上并没有挑选出它检测到的数学表达式, eval 是我能找到的唯一方法来获取一个字符串和将其用作数学表达式。
-
@DanielA.White 我将 wClient 声明为
const wClient = new Wit({accessToken: TOKEN})
标签: javascript node.js json discord.js wit-ai