我正在尝试制作一个Discord机器人,但我无法完全理解Discord.js。我的代码如下:
client.on('message', function(message) {
if (message.content === 'ping') {
client.message.send(author, 'pong');
}
});
问题在于我不太明白如何发送消息。
有人可以帮我吗?
我正在尝试制作一个Discord机器人,但我无法完全理解Discord.js。我的代码如下:
client.on('message', function(message) {
if (message.content === 'ping') {
client.message.send(author, 'pong');
}
});
问题在于我不太明白如何发送消息。
有人可以帮我吗?
发送代码已经再次更改。问题和答案中的所有项目都已过时。对于版本12,下面将是正确的代码。关于此代码的详细信息可在链接中找到。
要向特定频道发送消息
const channel = <client>.channels.cache.get('<id>');
channel.send('<content>');
发送私信给特定用户
const user = <client>.users.cache.get('<id>');
user.send('<content>');
如果你想私信一个用户,请注意机器人和用户至少应该有一个共同的服务器。在你的.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 版本
顶级答案已经过时
新的方法是:
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")
来不提及用户,此外在 discord.js
中你还可以通过以下方式发送嵌入内容:
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
})
还有一种选项可以通过以下方式与用户进行私信:
client.on("message", (msg) => {
msg.author.send("This is a dm")
})
请查看官方文档。
以下是向用户发送dm的代码:
(在此情况下,我们的消息不是响应,而是直接发送给所选用户的新消息。)
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);
更多文档:
这是关于IT技术的更多文档。请点击上方链接以获取详细信息。
您只能向一个频道发送消息。
client.on('message', function(message) {
if (message.content === 'ping') {
message.channel.send('pong');
}
});
client.on('message', function(message) {
if (message.content === 'ping') {
message.author.send('pong');
}
});
发送消息的方式有以下几种: 向运行命令的人发送私信:
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")
}
});
// Import d.js library
const { Client, Events } = require('discord.js');
// Your client
const client = new Client({...})
// Sending message
client.on(Events.MessageCreate, (msg) => {
if(msg.content.startsWith('ping') {
return msg.reply('pong')
}
});
client.login(...)
这是message.channel.send("content");
,因为你正在向当前频道发送消息。
console.log("test")
并将其放在if语句内,然后检查控制台输出。 - hansTheFranz