Discord.js 向特定频道发送消息

Discord.js sending a message to a specific channel

我没能完成一些非常简单的事情。我无法向特定频道发送消息。我浏览了有关堆栈溢出的文档和类似线程。

client.channels.get().send()

无效。 它不是一个函数。 我也不认为它是官方文档中 Channel class 上的一种方法,但到目前为止我发现的每个线程都告诉我要使用它。

我设法让机器人通过侦听消息然后使用 message.reply() 来回复消息,但我不希望那样。我希望我的机器人在 client.on('ready')

的特定频道中说些什么

我错过了什么?

您没有提供任何已经测试过的代码,所以我会为您提供准备好的活动代码!

    client.on('ready', client => {
        client.channels.get('CHANNEL ID').send('Hello here!');
    })

请注意您的频道 ID 是一个字符串。

如果有效请告诉我,谢谢!

2020 年 6 月 13 日编辑:

Discord.js 更新需要 cache 通道成员在 get 方法之前。

如果您的模块是遗留的,以上内容仍然有效。我最近的解决方案可以按如下方式更改发送行。

        client.channels.cache.get('CHANNEL ID').send('Hello here!')

如果您使用的是 TypeScript,则需要转换通道才能使用 TextChannel.send(message) 方法而不会出现编译器错误。

import { TextChannel } from 'discord.js';

( client.channels.cache.get('CHANNEL ID') as TextChannel ).send('Hello here!')

以下是我每次删除消息时向特定频道发送消息的方式。如果您想在没有频道 ID 的情况下发送消息,这将很有帮助。

client.on("messageDelete", (messageDelete) => {
  const channel = messageDelete.guild.channels.find(ch => ch.name === 'channel name here');
  channel.send(`The message : "${messageDelete.content}" by ${messageDelete.author} was deleted. Their ID is ${messageDelete.author.id}`);
}); 

如果您不使用 messageDelete,请务必定义它。

这适用于最新版本的 node.js msg.guild.channels.cache.find(i => i.name === 'announcements').send(annEmbed)

对于 v12,它将是以下内容:

  client.on('messageCreate', message => {
        client.channels.cache.get('CHANNEL ID').send('Hello here!');
    })

编辑:我将其更改为记录消息。

This 应该有效

client.channels.fetch('CHANNEL_ID')
    .then(channel=>channel.send('booyah!'))