16

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

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);

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

4

4 回答 4

38

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

如何获取频道的频道 ID:

  1. 打开您的不和谐设置

  2. Advanced

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

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

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

还可以查看discord.js 文档以了解(通道)集合


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

于 2017-01-06T22:40:45.003 回答
8

你也可以使用

bot.channels.find("name","welcome").send("Welcome!")
于 2017-12-22T17:53:14.970 回答
3

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

client.channels.cache.get("18NUMBERIDHERE").send("Welcome!");
于 2020-07-16T02:24:20.350 回答
0

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

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

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

于 2020-01-06T05:47:09.077 回答