discord js在运行bot.guilds.cache.array()时返回空数组

Posted

技术标签:

【中文标题】discord js在运行bot.guilds.cache.array()时返回空数组【英文标题】:discord js returning empty array when running bot.guilds.cache.array() 【发布时间】:2021-09-04 02:08:30 【问题描述】:

您好,我正在制作一个不和谐的机器人,我正在尝试获取每个公会的列表。 为此,我正在运行 bot.guilds.cache.array() 以尝试获取其所在的行会数组。 但是当我这样做时,我得到一个空数组。

const discord = require("discord.js")
const bot = new discord.Client()
bot.on("ready", x=> 
    bot.guilds.fetch()
    bot.channels.fetch()
)
console.log(bot.guilds.cache.array())
bot.login("y4932y14ui23ndsabmkcbaskjb485432534") // not my actual token lol

我上面的代码记录了 [],一个空数组。当然,这不是我真正的机器人令牌。

【问题讨论】:

【参考方案1】:

首先,不要泄露您的机器人令牌,尤其是在公共网站上。使用另一个文件并导入它,这样共享您的代码就不会出错。

其次,您希望在事件侦听器中保留尽可能多的函数,因此您应该将其移至 ready 事件侦听器中。

bot.on('ready', () => 
 console.log(bot.guilds.cache.array().map(guild => guild.name)
)

注意:.map() 在这里是可选的,但假设您希望它更具可读性并且只是公会名称列表而不是执行功能的对象,它在这种情况下会有所帮助。

编辑:亲自测试后修复错误

【讨论】:

感谢您的回复。我会试试这个。而且我没有放入我的实际令牌,我只是向随机字符发送垃圾邮件,不过感谢您的警告。

以上是关于discord js在运行bot.guilds.cache.array()时返回空数组的主要内容,如果未能解决你的问题,请参考以下文章

运行 Discord.JS 机器人时出错

无法安装 discord.js / 找不到模块 discord.js

尝试在终端中运行命令时,Discord.JS 令牌禁止功能无法正常工作[关闭]

调度程序播放在 10 分钟后停止 (discord.js)

Discord.js 错误 - 找不到模块

应该如何为我的 serverinfo.js 为 discord.js 定义执行/运行