Discord Bot 无法按名称获取频道

Discord Bot Can't Get Channel by Name

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

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

然而在这个"welcomeChannel is undefined".

编辑:

我尝试使用

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

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

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

如何获取频道的频道ID:

  1. 打开您的 Discord 设置

  2. 转到Advanced

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

  4. 右键单击您想要的频道

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

同时查看 discord.js documentation 的(频道)合集


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

您也可以使用

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

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

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

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

我尝试了很多次都出现了同样的错误,这就是我修复它的方法。我使用 client 作为我的 Client()。

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