NodeJS 使用Discord.js发送消息

fumotvh3  于 2023-10-17  发布在  Node.js
关注(0)|答案(9)|浏览(147)

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

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

问题是我不太明白如何传递信息。
有人能帮帮我吗?

fquxozlt

fquxozlt1#

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

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

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

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

如果你想DM一个用户,请注意机器人和用户至少应该有一个公共服务器。
希望这个答案能帮助那些在第12版之后来到这里的人。

7kqas0il

7kqas0il2#

您在.send()行中遇到错误。您所拥有的当前代码是在discord.js库的早期版本中使用的,并且实现此功能的方法已更改。
如果你有一个消息对象,比如在一个message事件处理程序中,你可以像这样向消息对象的通道发送一条消息:

message.channel.send("My Message");

下面是一个message事件处理程序的例子:

client.on("message", function(message) {
  message.channel.send("My Message");
});

您也可以向特定的 channel 发送消息,您可以首先使用其ID获取通道,然后向其发送消息:

  • (使用通配符/等待)*
const channel = await client.channels.fetch(channelID);
channel.send("My Message");
  • (使用Promise回调)*
client.channels.fetch(channelID).then(channel => {
  channel.send("My Message");
});
uinbv5nw

uinbv5nw3#

最重要的答案已经过时了
新方法是:

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

await channel.send('hi')

在获取通道ID时添加一点上下文;所有通道的列表存储在client.channels属性中。
一个简单的console.log(client.channels)将显示该服务器上所有通道的数组。

eoxn13cs

eoxn13cs4#

有四种方法可以实现你想要实现的目标,你可以使用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")

})

参见官方文档。

kuhbmx9i

kuhbmx9i5#

下面是dm用户的代码:
(In在这种情况下,我们的消息不是响应,而是直接发送给所选用户的新消息)。

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

mi7gmzs6

mi7gmzs66#

您只能向频道发送消息

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

vxf3dgd47#

发送消息的方式类型:不管是谁,都要执行命令:

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

58wvjzkj8#

Discord.js v14.13.0代码:

// 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(...)
9q78igpj

9q78igpj9#

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

相关问题