【问题标题】:client.channels.cache.get('id') returns empty Mapclient.channels.cache.get('id') 返回空 Map
【发布时间】:2021-12-14 14:44:41
【问题描述】:

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

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

所以我肯定还缺少其他东西。

【问题讨论】:

  • 你使用的是什么版本的discord.js

标签: javascript node.js collections discord.js


【解决方案1】:

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

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

console.log(channel)

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

【讨论】:

  • 好的,按照你的方式,我收到另一条错误消息,告诉我在执行频道请求时,我的客户端没有登录(正如我已经想到的那样)。只需在函数中添加 client.login('TOKEN') 即可修复它。我不知道在我的代码中登录两次是否会遇到问题,所以如果您对此有所了解,请告诉我。但是谢谢你的回答。它有助于找到一种方法
  • 不确定我能否理解1,您尝试获取频道的位置,2,您尝试再次登录的位置。跨度>
  • 我正在从一个不和谐的命令调用一个函数(我假设你知道在处理命令和调用相应函数时设置大致是什么样子)。在从命令调用的这个函数中,我想获取该请求前面的频道,我现在添加了一个client.login()。希望可以理解
猜你喜欢
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 2018-04-04
  • 2019-05-03
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多