使用 Discord.js 发送消息
Posted
技术标签:
【中文标题】使用 Discord.js 发送消息【英文标题】:Send a message with Discord.js 【发布时间】:2020-08-04 00:38:49 【问题描述】:我正在尝试制作一个不和谐机器人,但我不太了解 Discord.js。 我的代码如下所示:
client.on('message', function(message)
if (message.content === 'ping')
client.message.send(author, 'pong');
);
问题是我不太明白如何发送消息。
谁能帮帮我?
【问题讨论】:
您阅读过文档吗? if 语句在任何时候都是真的吗?请尝试使用console.log("test")
并将其放在 if 语句中并检查控制台的输出
我已经浏览了文档
@MártonKissik 不要使用该链接,因为它包含过时的信息。使用 discord.js.org/#/docs/main/stable/general/welcome 。您使用message.channel.send("Something")
发送消息
【参考方案1】:
发送代码已再次更改。问题和答案中的项目都已过时。对于版本 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】:您的.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
【讨论】:
【参考方案3】:最佳答案已过时
新方法是:
const channel = await client.channels.fetch(<id>);
await channel.send('hi')
在获取频道 ID 时添加一些上下文;
所有频道的列表存储在client.channels
属性中。
一个简单的console.log(client.channels)
将显示该服务器上所有频道的数组。
【讨论】:
【参考方案4】:您可以通过四种方式来实现您想要实现的目标,您可以使用提及用户的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。
【讨论】:
有3种方式。你也可以给用户私信。【参考方案5】:下面是 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
【讨论】:
【参考方案6】:您只能向频道
发送消息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】:发送消息的方式类型: 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")
);
【讨论】:
【参考方案8】:这是message.channel.send("content");
,因为您正在向当前频道发送消息。
【讨论】:
错误的链接哎呀哈哈,discord.js.org/# 是我要放的链接 这是一个将近 3 年的主题,但仍然感谢 ;) 没意识到 lmao,没问题以上是关于使用 Discord.js 发送消息的主要内容,如果未能解决你的问题,请参考以下文章
Discord.js 分片,如何使用 broadcastEval 发送嵌入消息?
Discord.js 使用@person 和#channel 发送消息