javascript - client.channels.cache.get('id') 返回空 Map
问题描述
我想获得一个只给定 ID 的频道。所以文档描述的方式是这样的:client.channels.cache.get('channel id')
,这也是我的做法。但是通过打印缓存,我看到缓存 Map 是空的(长度 = 0)。问题是,将它console.log(client.channels.cache)
放在我的客户端“就绪”事件侦听器中,它会被打印出来。
我读到如果客户端未正确登录,可能会出现此错误,但情况并非如此,因为我使用命令调用该函数,并且在程序启动后立即调用“就绪”事件侦听器中的控制台日志并且效果更好。
所以一定还有其他我想念的东西。
解决方案
如果您知道频道 ID,您可以简单地fetch
通过此 ID 进行频道。如果已缓存,则返回缓存的频道:
const channel = await client.channels.fetch(CHANNEL_ID)
console.log(channel)
fetch()
返回一个 Promise,因此您需要await
在异步函数或then
方法中使用。
推荐阅读
- unit-testing - 如何使用 jasmine js 对嵌套的 Promise 进行单元测试?
- python - Python BallSwitchBall 问题。时间性能问题
- schema.org - Schema.org - 结构化数据输入错误的数字
- r - 是否可以从 R 中的绘图中获取数据
- shell - 将基于日期时间的 2 个 csv 文件与 shell 组合
- c++ - 前向声明导致“找到一个或多个相乘的定义符号”?
- java - 使用 getter 和 setter 从另一个控制器检索时填充在一个控制器中设置的值
- c# - iTextSharp 如何向 PDF-A 添加自定义属性?
- vim - 为什么`ctrl -h`在插入模式下不起作用?(版本gvim 8.1.1)
- c++ - set 如何使用唯一键但在 C++ 中具有等效键值?