繁体   English   中英

使用 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 获取频道,然后向其发送消息:

(使用异步/等待)

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 开始工作

发送代码已再次更改。 问题和答案中的项目都已过时。 对于版本 12,下面将是正确的代码。 有关此代码的详细信息可在此链接中找到

向特定频道发送消息

const channel = <client>.channels.cache.get('<id>');
channel.send('<content>');

向 DM 中的特定用户发送消息

const user = <client>.users.cache.get('<id>');
user.send('<content>');

如果您想 DM 用户,请注意机器人和用户应该至少有一个共同的服务器。

希望这个答案可以帮助那些在 12 版之后来到这里的人。

最佳答案已过时

新方法是:

const channel = await client.channels.fetch(<id>);

await channel.send('hi')

添加有关获取频道 ID 的一些上下文; 所有频道的列表存储在client.channels属性中。

一个简单的console.log(client.channels)将显示该服务器上所有频道的数组。

以下是 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);

更多文档:

https://github.com/AnIdiotsGuide/discordjs-bot-guide/blob/master/frequently-asked-questions.md#users-and-members

您可以通过四种方法来实现您想要实现的目标,您可以使用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
})

还可以选择 dm 用户,可以通过以下方式实现:

client.on("message", (msg) => {
msg.author.send("This is a dm")

})

请参阅官方文档

这是message.channel.send("content"); 因为您正在向当前频道发送消息。

您只能向频道发送消息

client.on('message', function(message) {
 if (message.content === 'ping') {
  message.channel.send('pong');
 }
});

如果你想 DM 用户,那么你可以使用 User.send() 函数

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")
 }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM