【问题标题】:Updated to discord.js v12, Unable to list all guilds更新到 discord.js v12,无法列出所有公会
【发布时间】:2020-07-07 18:30:35
【问题描述】:

我在 discord.js v11 中创建了一个 discord 机器人并将其更新到 v12,经过细微调整后所有代码似乎都可以正常工作,但我无法修复我的代码以列出该机器人连接到的所有公会,如果有人知道在 v12 中启动机器人期间执行此操作的方法,请为帮助感到高兴

【问题讨论】:

    标签: node.js discord.js


    【解决方案1】:

    假设client 是您的Discord Clientclient.guilds.cache 将是您的机器人所在的Guilds 中的Collection。请参阅GuildManager#cache;这正是您在 v11 中所期望的 client.guilds

    相同的缓存概念适用于每个 Manager。

    【讨论】:

    • 这就是问题所在,每当我尝试定义新的 GuildManager 时,它都会给我一个错误,我不记得它是什么,因为机器人有大约 20 个服务器,所以我决定暂时删除代码,如果可以的话帮我在 bot 启动代码中添加几行,以将所有服务器读取为一个很棒的列表 js client.on('ready', () => { reloadall("boot") client.user.setPresence({ activity: {name: "name"},status: "online"}) })
    • @Delphren Phox console.log(client.guilds.cache.array()) 会将客户行会的数组打印到控制台。此外,您可以通过将ClientOptions 作为参数传递给Client 构造函数来设置客户端的初始状态。这样,在登录客户端时就已经为您设置好了。有关详细信息,请参阅文档。
    • 我之前的代码是js client.guilds.forEach((guild) => { console.log(" - " + guild.name) }) 并且只打印了名称,在单独的行中,而不是每个服务器的整个对象树也你是什么意思传递ClientOptions?我还在学习更多关于 js 的知识(这个机器人只有大约 1000 行),并且想知道我会做些什么来在机器人加载时设置 Presence。
    • @DelphrenPhox 您绝对可以使用以前的代码,但请确保根据此答案将其更改为 client.guilds.cache.forEach(...)。至于存在,您可以将创建客户端的现有代码更改为new Discord.Client({ presence: <presence data from your first comment> })(或new Client(...),如果您已解构),而不是将构造函数参数留空。
    • 我尝试将旧代码更改为使用 client.guilds.cache.forEach 但收到错误提示 forEach 不是函数
    猜你喜欢
    • 2021-06-26
    • 1970-01-01
    • 2021-10-13
    • 2020-12-10
    • 2020-09-14
    • 2021-06-28
    • 2018-08-19
    • 2021-07-06
    • 2021-04-14
    相关资源
    最近更新 更多