【问题标题】:Not finding channel by name没有按名称查找频道
【发布时间】:2021-09-27 14:23:14
【问题描述】:

我尝试了let message = message.guild.channels.cache.find(channel => channel.name == 'channel-name'),结果未定义。如果我在 vscode 中将鼠标悬停在频道上,频道是公会频道,但我使用了 console.log,它是未定义的。

【问题讨论】:

  • 我已经测试了您的代码,它确实按预期工作。确保您的频道名称中没有任何拼写错误。频道名称是小写的。
  • 可能是因为我在频道名称中使用了 var 名称。

标签: node.js discord.js


【解决方案1】:

我有 3 个问题要问你:

  1. 频道不存在(不言自明)

  2. 你没有缓存频道

//To cache the channel do this:
await message.guild.channels.fetch();
//…find code, etc
  1. 您的机器人无权访问该频道。 如果您在频道的成员列表中没有看到该机器人,那么该机器人显然没有访问权限。确保在频道中授予机器人查看频道权限。

【讨论】:

  • 你放的代码需要ID。我需要找到身份证。频道存在,机器人是管理员。
  • 你在缓存频道吗? fetch() 是在服务器缓存ALL频道,不是为了找到它。然后你可以在缓存中找到它。
  • @WasteofSpaceYT 如果您想按名称查找频道,则不确定您为什么接受其他答案。接受的一个仅适用于 ID,而这个是正确的并解决了您的问题。
  • 我不记得 100% 但我很确定另一个没有使用承诺。
【解决方案2】:

如果您想获得频道,请这样做

message.guild.channels.cache.get("频道 ID")

更容易使用

【讨论】:

    猜你喜欢
    • 2020-02-16
    • 2021-05-19
    • 2016-01-22
    • 1970-01-01
    • 2023-03-16
    • 2014-10-13
    • 2020-01-29
    • 2014-11-17
    • 2018-10-31
    相关资源
    最近更新 更多