如何使用 Discord.js 显示 .JSON 文件的内容?
Posted
技术标签:
【中文标题】如何使用 Discord.js 显示 .JSON 文件的内容?【英文标题】:How do you display content of a .JSON file using Discord.js? 【发布时间】:2020-06-01 22:55:23 【问题描述】:目前我的代码显示为
if(message.content.startsWith(prefix + 'readback'))
fs.readFile('msgs.json', (err, data) =>
if (err) throw err;
let _msgs = JSON.parse(data);
message.channel.send(_msgs);
console.log(_msgs)
);
包含所有适当的常量和变量
在使用 prefix + 'readback
时,Discord Bot 将 _msgs
显示为 [object Object]
- 为了确保这不是代码问题,我添加了 console.log(_msgs)
,并且正确的 JSON 文件内容显示在控制台中.有没有办法让 Bot 在频道中显示 JSON 文件的内容?
【问题讨论】:
message.channel.send() 使用 toString() 方法将 _msgs 转换为字符串,该方法将为 json 对象返回类似于 [object Object] 的内容;您可能想尝试使用 JSON.stringify() 【参考方案1】:您可以利用discord markdown。
代码块,就像 Stack Overflow 上一样,可用于格式化代码,甚至添加颜色:
```json
"some": "json"
```
将呈现如下:
现在,正如 Xander Kyle 在评论中所说,您想将 JSON.stringify
用作 message.channel.send
使用 toString
将变量转换为字符串,但它不能“按您的意愿”用于对象。
fs.readFile('msgs.json', (err, data) =>
if (err) throw err;
const _msgs = JSON.stringify(JSON.parse(data), null, 2);
message.channel.send('```json\n' + _msgs + '\n```');
console.log(_msgs)
);
stringify 中的 2
使 json 缩进 (documentation)
【讨论】:
【参考方案2】:这是我使用的代码,它将格式为 JSON 的对象发送到通道。
var msg = '\```json\n'
for (var key in jsobj)
if (jsobj.hasOwnProperty(key))
msg = msg + "\n \"" + key + "\": \"" + jsobj[key] + "\","
msg = msg.substring(0, msg.length - 1)
msg = msg + "\n\`\`\`"
message.channel.send(msg);
jsobj
变量将是您的 JSON 对象。
【讨论】:
【参考方案3】:fs.readFile('msgs.json', (err, data) =>
if (err) throw err;
let _msgs = JSON.stringify(JSON.parse(data), null, 2);
message.channel.send(_msgs);
console.log(_msgs)
);
这会将 JSON 格式化为带有 2 个空格缩进的多行。
如果你这样做:
message.channel.send(data);
然后你会得到 JSON 但没有格式。
【讨论】:
以上是关于如何使用 Discord.js 显示 .JSON 文件的内容?的主要内容,如果未能解决你的问题,请参考以下文章