首页 > 解决方案 > client.channels.cache.get('id') 返回空 Map

问题描述

我想获得一个只给定 ID 的频道。所以文档描述的方式是这样的:client.channels.cache.get('channel id'),这也是我的做法。但是通过打印缓存,我看到缓存 Map 是空的(长度 = 0)。问题是,将它console.log(client.channels.cache)放在我的客户端“就绪”事件侦听器中,它会被打印出来。

我读到如果客户端未正确登录,可能会出现此错误,但情况并非如此,因为我使用命令调用该函数,并且在程序启动后立即调用“就绪”事件侦听器中的控制台日志并且效果更好。

所以一定还有其他我想念的东西。

标签: javascriptnode.jscollectionsdiscord.js

解决方案


如果您知道频道 ID,您可以简单地fetch通过此 ID 进行频道。如果已缓存,则返回缓存的频道:

const channel = await client.channels.fetch(CHANNEL_ID)

console.log(channel)

fetch()返回一个 Promise,因此您需要await在异步函数或then方法中使用。


推荐阅读