javascript - 为什么broadcastEval()不返回公会的角色?

标签 javascript node.js bots discord discord.js

这是我的代码:

await shardingManager.broadcastEval(`this.guilds.get('352896116812939264')`);

这是上面的评估返回的内容:

{ members: {},
  channels: {},
  roles: {},
  presences: {},
  deleted: false,
  available: true,
  id: '352896116812939264',
  name: 'LenoxBot™',
  ...}

我现在的问题是,为什么它不返回角色、 channel 、成员......


我什至尝试了以下方法,但它也不起作用:

await shardingManager.broadcastEval(`this.guilds.get('352896116812939264').roles`);

(机器人有足够的权限查看所有角色等)

谢谢!

最佳答案

这里的问题是,在稳定版本中,诸如Guild#roles之类的东西尚未可 JSON 序列化,例如由于循环引用 ( guild.roles.first().client ),因此 node.js 仅返回 {}

相关:https://github.com/discordjs/discord.js/issues/3144

On the development branch, all Discord.js objects are JSON serializable. Unfortunately, that change won't land until v12. ~ appellation

正如那里提到的,您可以使用discord.js v12,或者您需要自己序列化对象。

关于javascript - 为什么broadcastEval()不返回公会的角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55663747/

相关文章:

javascript - 通过 MQTT 将图像从 Arduino 发送到 MOSCA 主机

api - getaddrinfo ENOTFOUND API Google Cloud

facebook - 如何为 Facebook Messenger 创建群组机器人?

javascript - JQuery, Action 无法识别函数内部的变量

javascript - Webpack 模块联合不适用于急切的共享库

javascript - 从nodejs中的响应生成空白PDF文件

python - 使用 Tweepy 的 Twitter 机器人 - Python

javascript - 多个相关选择框不起作用

javascript - 如何使用 Javascript 访问另一个页面的元素?

javascript - 循环访问 .json 对象