我没能实现一些非常简单的事情。我无法向特定频道发送消息。我浏览了有关堆栈溢出的文档和类似线程。
client.channels.get().send()
不工作。 它不是一个函数。 我也不认为它是官方文档中 Channel 类的方法,但到目前为止我发现的每个线程都告诉我要使用它。
我设法让机器人通过收听消息然后使用
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!')
对于 v12 它将是以下内容:
client.on('messageCreate', message => {
client.channels.cache.get('CHANNEL ID').send('Hello here!');
})
编辑:我将其更改为记录消息。
这将适用于最新版本的 node.js
msg.guild.channels.cache.find(i => i.name === 'announcements').send(annEmbed)
这应该工作
client.channels.fetch('CHANNEL_ID')
.then(channel=>channel.send('booyah!'))
以下是我每次删除消息时向特定频道发送消息的方式。如果您想在没有频道 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,请务必定义它。