使用Discord.js发送消息

时间:2017-07-15 16:50:35

标签: javascript discord discord.js

因此。我想制作一个不和谐的机器人,但我不能完全理解Discord.js。 我的代码如下所示:

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

问题在于我无法理解如何发送信息。

有人能帮助我吗?

8 个答案:

答案 0 :(得分:19)

您的.send()行中有错误。您拥有的当前代码在早期版本的discord.js库中使用,并且发送功能已更改。

要发送消息,请使用以下行:

message.channel.send('My Message')

如果您收到错误消息,指出message不是defined,请确保您已将该行放入消息事件处理程序中。

client.on("message", function(message) {
  //message sending goes here
});

您还可以向特定频道发送消息,您可以使用以下行进行操作。

client.channels.get(channelID).send('My Message');

或者如果您愿意,可以使用公会的默认频道(公会创建时的#general频道)

guildObj.defaultChannel.send('My Message');

希望这有帮助,

- 间谍

答案 1 :(得分:19)

发送代码已再次更改。问题和答案中的项目均已过时。对于版本12,下面将是正确的代码。 link中提供了有关此代码的详细信息。

向特定频道发送消息

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

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

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

如果要与用户DM关联,请注意,漫游器和用户应至少有一个共同的服务器。

希望此答案对版本12之后的用户有所帮助。

答案 2 :(得分:4)

最佳答案已过时

新方法是:

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

await channel.send('hi')

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

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

答案 3 :(得分:2)

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

})

the official documentation

答案 4 :(得分:0)

下面,我介绍向用户发送直接消息的脚本。

在这种情况下,我们的消息不是答复,而是新消息直接发送给选定的用户。

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

您只能将消息发送到频道

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

答案 7 :(得分:0)

发送消息的方式类型: 向运行命令的人发送消息:

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