【问题标题】:How do you display content of a .JSON file using Discord.js?如何使用 Discord.js 显示 .JSON 文件的内容?
【发布时间】: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()

标签: javascript node.js json discord.js


【解决方案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 但没有格式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-12
        • 1970-01-01
        • 2021-11-23
        • 1970-01-01
        • 1970-01-01
        • 2020-06-23
        • 2021-04-30
        • 1970-01-01
        相关资源
        最近更新 更多