使用 Discord.js 发送消息
Send a message with Discord.js
我正在尝试制作一个不和谐的机器人,但我不太明白Discord.js。
我的代码如下所示:
client.on('message', function(message) {
if (message.content === 'ping') {
client.message.send(author, 'pong');
}
});
问题是我不太明白如何发送消息。
有人可以帮我吗?
您的 .send()
行有误。您现有的代码在早期版本的 discord.js 库中使用,实现此目的的方法已更改。
如果您有消息对象,例如在 message
事件处理程序中,您可以像这样向消息对象的通道发送消息:
message.channel.send("My Message");
来自 message
事件处理程序的示例:
client.on("message", function(message) {
message.channel.send("My Message");
});
您还可以向特定的频道发送消息,方法是先使用频道 ID 获取频道,然后向其发送消息:
(使用async/await)
const channel = await client.channels.fetch(channelID);
channel.send("My Message");
(使用 Promise
回调)
client.channels.fetch(channelID).then(channel => {
channel.send("My Message");
});
适用于 Discord.js 版本 12
以下是私信用户的代码:
(在这种情况下,我们的消息不是回复,而是直接发送给所选用户的新消息。)
require('dotenv').config({ path: __dirname + '/.env.local' });
const Discord = require("discord.js");
const client = new Discord.Client();
client.on("ready", () => {
console.log(client.users.get('ID_OF_USER').send("hello"));
});
client.login(process.env.DISCORD_BOT_TOKEN);
更多文档:
再次更改发送代码。问题和答案中的项目都已过时。对于版本 12,下面是正确的代码。有关此代码的详细信息,请参见 link.
向特定频道发送消息
const channel = <client>.channels.cache.get('<id>');
channel.send('<content>');
向 DM 中的特定用户发送消息
const user = <client>.users.cache.get('<id>');
user.send('<content>');
如果你想私信一个用户,请注意机器人和用户应该至少有一个共同的服务器。
希望这个回答能帮助到版本 12 之后来到这里的人。
message.channel.send("content");
因为您正在向当前频道发送消息。
您只能向频道
发送消息
client.on('message', function(message) {
if (message.content === 'ping') {
message.channel.send('pong');
}
});
如果你想私信用户,那么你可以使用User.send()函数
client.on('message', function(message) {
if (message.content === 'ping') {
message.author.send('pong');
}
});
最佳答案已过时
新方法是:
const channel = await client.channels.fetch(<id>);
await channel.send('hi')
添加一些有关获取频道 ID 的上下文;
所有频道的列表存储在 client.channels
属性.
一个简单的 console.log(client.channels)
将显示该服务器上所有频道的数组。
有四种方法可以实现您想要实现的目标,您可以使用提及用户的 message.reply("Pong")
或使用不会提及用户的 message.channel.send("Pong")
,另外在 [=14] =] 您可以选择通过以下方式发送嵌入:
client.on("message", () => {
var message = new Discord.MessageEmbed()
.setDescription("Pong") // sets the body of it
.setColor("somecolor")
.setThumbnail("./image");
.setAuthor("Random Person")
.setTitle("This is an embed")
msg.channel.send(message) // without mention
msg.reply(message) // with mention
})
还有一个 dm 用户的选项,可以通过以下方式实现:
client.on("message", (msg) => {
msg.author.send("This is a dm")
})
发送消息的方式类型:
私信 运行 命令的人:
client.on('message', function(message) {
if (message.content === 'ping') {
message.author.send('pong');
}
});
在使用该命令的频道中发送消息:
client.on('message', function(message) {
if (message.content === 'ping') {
message.channel.send('pong');
}
});
在特定频道发送消息:
client.on('message', function(message) {
const channel = client.channels.get("<channel id>")
if (message.content === 'ping') {
channel.send("pong")
}
});
我正在尝试制作一个不和谐的机器人,但我不太明白Discord.js。 我的代码如下所示:
client.on('message', function(message) {
if (message.content === 'ping') {
client.message.send(author, 'pong');
}
});
问题是我不太明白如何发送消息。
有人可以帮我吗?
您的 .send()
行有误。您现有的代码在早期版本的 discord.js 库中使用,实现此目的的方法已更改。
如果您有消息对象,例如在 message
事件处理程序中,您可以像这样向消息对象的通道发送消息:
message.channel.send("My Message");
来自 message
事件处理程序的示例:
client.on("message", function(message) {
message.channel.send("My Message");
});
您还可以向特定的频道发送消息,方法是先使用频道 ID 获取频道,然后向其发送消息:
(使用async/await)
const channel = await client.channels.fetch(channelID);
channel.send("My Message");
(使用 Promise
回调)
client.channels.fetch(channelID).then(channel => {
channel.send("My Message");
});
适用于 Discord.js 版本 12
以下是私信用户的代码:
(在这种情况下,我们的消息不是回复,而是直接发送给所选用户的新消息。)
require('dotenv').config({ path: __dirname + '/.env.local' });
const Discord = require("discord.js");
const client = new Discord.Client();
client.on("ready", () => {
console.log(client.users.get('ID_OF_USER').send("hello"));
});
client.login(process.env.DISCORD_BOT_TOKEN);
更多文档:
再次更改发送代码。问题和答案中的项目都已过时。对于版本 12,下面是正确的代码。有关此代码的详细信息,请参见 link.
向特定频道发送消息
const channel = <client>.channels.cache.get('<id>');
channel.send('<content>');
向 DM 中的特定用户发送消息
const user = <client>.users.cache.get('<id>');
user.send('<content>');
如果你想私信一个用户,请注意机器人和用户应该至少有一个共同的服务器。
希望这个回答能帮助到版本 12 之后来到这里的人。
message.channel.send("content");
因为您正在向当前频道发送消息。
您只能向频道
发送消息client.on('message', function(message) {
if (message.content === 'ping') {
message.channel.send('pong');
}
});
如果你想私信用户,那么你可以使用User.send()函数
client.on('message', function(message) {
if (message.content === 'ping') {
message.author.send('pong');
}
});
最佳答案已过时
新方法是:
const channel = await client.channels.fetch(<id>);
await channel.send('hi')
添加一些有关获取频道 ID 的上下文;
所有频道的列表存储在 client.channels
属性.
一个简单的 console.log(client.channels)
将显示该服务器上所有频道的数组。
有四种方法可以实现您想要实现的目标,您可以使用提及用户的 message.reply("Pong")
或使用不会提及用户的 message.channel.send("Pong")
,另外在 [=14] =] 您可以选择通过以下方式发送嵌入:
client.on("message", () => {
var message = new Discord.MessageEmbed()
.setDescription("Pong") // sets the body of it
.setColor("somecolor")
.setThumbnail("./image");
.setAuthor("Random Person")
.setTitle("This is an embed")
msg.channel.send(message) // without mention
msg.reply(message) // with mention
})
还有一个 dm 用户的选项,可以通过以下方式实现:
client.on("message", (msg) => {
msg.author.send("This is a dm")
})
发送消息的方式类型: 私信 运行 命令的人:
client.on('message', function(message) {
if (message.content === 'ping') {
message.author.send('pong');
}
});
在使用该命令的频道中发送消息:
client.on('message', function(message) {
if (message.content === 'ping') {
message.channel.send('pong');
}
});
在特定频道发送消息:
client.on('message', function(message) {
const channel = client.channels.get("<channel id>")
if (message.content === 'ping') {
channel.send("pong")
}
});