向用户发送私信

Sending private messages to user

我正在使用 discord.js 库和 node.js 创建一个促进扑克的 Discord 机器人。它是功能性的,除了向所有人展示手,我需要遍历玩家并用他们的手向他们发送 DM。

bot.on("message", message => {
  message.channel.sendMessage("string");
});

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

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

为了让机器人发送消息,您需要 <client>.send()client 是机器人将消息发送到的地方(一个频道,在服务器的任何地方,或者一个 PM ).由于您希望机器人向某个用户发送 PM,因此您可以使用 message.author 作为您的 client。 (您可以将 author 替换为消息中提到的用户等)

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

我建议您在遇到问题时查看有关特定对象属性的 Discord.js 文档,您可能会找到可以作为解决方案的特定函数。

以上答案也很有效,但我发现您通常可以只使用 message.author.send("blah blah") 而不是 message.author.sendMessage("blah blah")

-编辑-:这是因为 sendMessage 命令在 Discord Js 的 v12 中已经过时

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

让代码说 if (msg.content === ('trigger') msg.author.send('text')}

这很简单,这是一个例子

在此处添加您的命令代码,例如:

if (cmd === `!dm`) {
 let dUser =
  message.guild.member(message.mentions.users.first()) ||
  message.guild.members.get(args[0]);
 if (!dUser) return message.channel.send("Can't find user!");
 if (!message.member.hasPermission('ADMINISTRATOR'))
  return message.reply("You can't you that command!");
 let dMessage = args.join(' ').slice(22);
 if (dMessage.length < 1) return message.reply('You must supply a message!');

 dUser.send(`${dUser} A moderator from WP Coding Club sent you: ${dMessage}`);

 message.author.send(
  `${message.author} You have sent your message to ${dUser}`
 );
}

如果您想将消息发送给预定的人,例如您自己,您可以将其设置为接收消息的频道是他们(您的)自己的用户 ID。因此,例如,如果您正在使用 Digital Trends 的 discord bot 教程,其中显示 "to: ",您将继续使用他们(或您的)用户 ID。例如,根据特定代码的设置方式,您可以执行 "to: userID",它会向该人发送消息。或者,如果您希望机器人在有人使用特定命令时随时向您发送消息,您可以执行 "to: '12345678890'",数字是实际用户 ID 的填充符。希望这对您有所帮助!

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

获取用户实例

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

获得用户实例后,您可以使用 .send

发送消息

例子

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

如果您希望键入消息,然后您的机器人会将其发送给用户,请使用此处的代码。它也有角色限制:)

case 'dm':
  mentiondm = message.mentions.users.first();
  message.channel.bulkDelete(1);
  if (!message.member.roles.cache.some(role => role.name === "Owner")) return message.channel.send('Beep Boing: This command is way too powerful for you to use!');
  if (mentiondm == null) return message.reply('Beep Boing: No user to send message to!');
  mentionMessage = message.content.slice(3);
  mentiondm.send(mentionMessage);
  console.log('Message Sent!')
  break;

现在仅供参考 v12

client.users.fetch('487904509670337509', false).then((user) => {
 user.send('heloo');
});

其中 '487904509670337509' 是身份证号码。