【问题标题】:Discord Bot 无法按名称获取频道
【发布时间】:2017-05-21 18:33:11
【问题描述】:

我一直在制作一个不和谐机器人,并想让它向特定的“欢迎”频道发送消息。不幸的是,我一直无法这样做。我试过了。

const welcomeChannel = bot.channels.get("name", "welcome")
welcomeChannel.sendMessage("Welcome\n"+member.user.username);

但是在这个“welcomeChannel 未定义”中。

编辑:

我尝试过使用

const welcomeChannel = bot.channels.get("id", "18NUMBERIDHERE")
welcomeChannel.sendMessage("Welcome\n"+member.user.username);

但这仍然是未定义的,奇怪的是

【问题讨论】:

标签: javascript discord discord.js bots


【解决方案1】:

您应该使用频道 ID 而不是其名称。

如何获取频道的频道ID:

  1. 打开您的 Discord 设置

  2. 转到Advanced

  3. 勾选Developer Mode(并关闭Discord设置)

  4. 右键点击你想要的频道

  5. 现在有一个选项 Copy ID 可以复制频道 ID

还可以查看discord.js documentation 以获取(频道)收藏


此外,您的方法将不起作用,因为.get 想要一个频道 ID(请参阅上面的链接文档)。如果您真的想通过频道名称获取频道,请改用.find
但是,如果您的机器人在多个服务器上运行,这是一个非常糟糕的主意,因为频道名称现在可以出现多次。

【讨论】:

  • 出于某种原因,这也不起作用。我在新代码中进行了编辑。
  • @FishProHD 是 bot.channels.get("18NUMBERIDHERE"),而不是 bot.channels.get("id", "18NUMBERIDHERE")
  • 明天我会给你赏金。我喜欢你的回答,并相信你应该得到赏金,因为你给出了详细而简单的步骤。 (另外,有点无关紧要,我想要它附带的徽章)
  • @TyQ。我目前没有时间在 SO 上发布详细的答案,所以我非常感谢赏金!谢谢陌生人
  • 这里已经回答了这个问题:stackoverflow.com/questions/50463163/…。更不用说在被问到时,文档已经更改,.get 或 .find,不再适用于获取频道,您必须使用 fetch 方法,如我发布的链接的第二个答案中所述。此外,这里的答案并没有真正回答问题,当他问他为什么不能通过名称或 ID 获取频道时,我很困惑为什么他需要担心设置频道位置。
【解决方案2】:

你也可以使用

bot.channels.find("name","welcome").send("Welcome!")

【讨论】:

    【解决方案3】:

    我尝试了很多相同的错误,这就是我修复它的方法。我使用客户端作为我的 Client()。

    client.channels.cache.get("18NUMBERIDHERE").send("Welcome!");
    

    【讨论】:

      【解决方案4】:

      您的错误可能来自您正在使用bot.channels.get(),这不是最好的主意,因为在多个项目上使用.send() 时,discord.js 不是很友好。

      如果可能,请尝试使用member.guild.channels.find("name", "channel").send();。如果这是在client.on("message") 中,那么只需使用message.member.channels.find("name", "channel").send();

      旁注:我的记忆混乱了,所以如果这不起作用,请尝试.get() 而不是find

      【讨论】:

        猜你喜欢
        • 2018-10-31
        • 2020-02-16
        • 2014-11-17
        • 2017-11-13
        • 2021-11-10
        • 2019-05-05
        • 2021-03-26
        • 2018-02-15
        • 1970-01-01
        相关资源
        最近更新 更多