向用户发送私人消息

ada*_*pap 10 javascript node.js discord.js

我正在使用discord.js库和node.js来创建一个促进扑克的Discord机器人.它是有用的,除了向每个人展示双手,我需要循环玩家并用他们的手向他们发送DM.

bot.on("message", message => {
  message.channel.sendMessage("string");
});
Run Code Online (Sandbox Code Playgroud)

这是在任何用户发送消息时向消息发送消息的代码.我需要机器人在私人频道回复; 我见过dmChannel,但我不明白如何使用它.我有要向其发送消息的成员的用户名.一个例子将不胜感激.

编辑:在查找用户对象后,我发现我可以使用.users客户端(bot)的属性获取所有用户.我会user.sendMessage("string")尽快尝试使用这种方法.

小智 21

为了让机器人发送消息,您需要<client>.send(),client机器人将向其发送消息的位置(A通道,服务器中的任何位置或PM).由于您希望机器人PM成为特定用户,因此您可以将其message.author用作您的client.(您可以author在消息或其他内容中替换所提及的用户等)

因此,答案是: message.author.send("Your message here.")

我建议您在遇到卡片时查找有关某个对象属性的Discord.js文档,您可能会发现可以作为您的解决方案的特定功能.

  • 请记住,discord.js文档(https://discord.js.org/#/docs/main/stable/general/welcome)是作为javadoc编写的,对于用法示例或将意图转换为代码可能并不总是有效.如果存在StackOverflow等网站,建议有人研究整个库的特定实现是不明智的.最好将它们指向与其问题相关的文档(https://discord.js.org/#/docs/main/stable/search?q=sendmessage). (7认同)
  • `.ndndMessage('content')`现在已被弃用 - 而是使用`.send('content')` (7认同)

tom*_*une 11

要向用户发送消息,您首先需要获取一个User实例。

获取User实例

  • 使用message.author用户发送的消息的属性。
  • client.users.fetch使用用户的 id进行调用

获得用户实例后,您可以使用.send发送消息

例子

client.on('message', (msg) => {
 if (!msg.author.bot) msg.author.send('ok ' + msg.author.id);
});
Run Code Online (Sandbox Code Playgroud)
client.users.fetch('487904509670337509', false).then((user) => {
 user.send('hello world');
});
Run Code Online (Sandbox Code Playgroud)


小智 5

上面的答案也很好用,但我发现你通常可以使用message.author.send("blah blah")代替message.author.sendMessage("blah blah").

-EDIT-:这是因为自 Discord Js 中的 v12 起,sendMessage 命令已过时

.send 通常比 .sendMessage 更适合我,后者有时会遇到问题。希望有一点帮助!

  • 事实上,`sendMessage()` 已被弃用。 (2认同)