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!'))
我没能完成一些非常简单的事情。我无法向特定频道发送消息。我浏览了有关堆栈溢出的文档和类似线程。
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!'))