如何向特定频道发送消息

aan*_*ell 12 javascript bots channel discord.js

我正在尝试使用我的 Discord 机器人向特定频道发送消息,该机器人位于多个服务器中。我希望机器人从一台服务器接收消息并将消息发送到我的个人服务器,在特定频道中,但我无法让它“找到”频道。API有变化吗?我也尝试npm install discord.js更新。

代码:

if (message.author.id == 'XXXXX' && !mess.includes("Dank") && message.channel.id != 'XXXXX') {
  bot.channels.get('XXXXX').send('memes');
}
Run Code Online (Sandbox Code Playgroud)

我尝试了几件事,但没有奏效。

if (message.author.id == 'XXXXX' && !mess.includes("Dank") && message.channel.id != 'XXXXX') {
  bot.channels.get('XXXXX').send('memes');
}
Run Code Online (Sandbox Code Playgroud)

GMa*_*olo 21

假设您有client(这将是 的一个实例Discord.Client)尝试使用Client.find以下方法找到所需的频道:

const channel = client.channels.cache.find(channel => channel.name === channelName)
channel.send(message)
Run Code Online (Sandbox Code Playgroud)

如果您没有client直接的但有一个message实例,您总是可以从Message.client属性中访问它。

  • 当前收到此错误“类型‘通道’上不存在属性‘发送’。” (3认同)

小智 13

如果您使用打字稿,则需要在 Channel 上进行类型转换。所以你可以在 TextChannel 中转换它并发送消息

const channel = client.channels.cache.find(ch => ch.name === 'compras');

if (channel.isText() {
    (<TextChannel> channel).send('message')
}
Run Code Online (Sandbox Code Playgroud)

  • 需要投吗?isText() 不是类型保护吗?该守卫检查的所有类型都实现了“send”函数。 (4认同)

小智 11

好吧,如果你有 " client" 实例Discord.Client(),那么使用这个:

已更新解决方案以使用较新的 discordjs 版本

client.channels.cache.get(`channelID`).send(`Text`)

不要忘记 channeID 参数是字符串类型,而不是数字。这真的很简单但很精确。

  • 类型“Channel”上不存在属性“发送”。ts(2339) (2认同)