向用户发送私人消息

时间:2017-01-19 15:04:15

标签: javascript node.js discord.js

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

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

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

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

10 个答案:

答案 0 :(得分:16)

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

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

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

答案 1 :(得分:3)

现在是 v12 的仅供参考

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

其中 '487904509670337509' 是 ID 号。

答案 2 :(得分:2)

上述答案也可以正常使用,但我发现您通常只能使用message.author.send("blah blah")代替message.author.sendMessage("blah blah")

.send往往比.sendMessage更好地为我工作,它有时遇到问题。 希望有点儿帮忙!

答案 3 :(得分:1)

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

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;

答案 4 :(得分:0)

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

答案 5 :(得分:0)

这很简单,这里是一个例子

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

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}`)
}

答案 6 :(得分:0)

target.send('string')应该起作用

答案 7 :(得分:0)

如果要将消息发送给预定的人(例如您自己),则可以对其进行设置,以使消息传递到的通道将是他们(您自己)的用户ID。因此,例如,如果您使用的是Digital Trends的Discord机器人教程,其中说“ to:”,您将继续使用其(或您的)用户ID。例如,使用特定代码的设置方式,您可以执行“ to:userID”,它会向该人发送消息。或者,如果您希望机器人在有人使用特定命令的任何时间向您发送消息,则可以执行“至:'12345678890'”,这些数字将填充实际的用户ID。希望这会有所帮助!

答案 8 :(得分:0)

要向用户发送消息,您首先需要一个User实例,代表您要将消息发送给的用户。


获取用户实例

  • 您可以从用户发送的消息中获取User实例 做message.autor
  • 您可以使用User从用户ID获得一个client.fetchUser实例

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

发送消息

示例

client.on('message', msg => {
        if(!msg.author.bot) msg.author.send("ok " + msg.author.id)
})

client.fetchUser("487904509670337509",false).then(user => {
        user.send("heloo",) 
})

答案 9 :(得分:-1)

一种简单的方法是执行以下操作:

const channel = client.channels.cache.get("CHANNEL_ID");
channel.send("Hello");

频道名称

const channel = client.channels.cache.get((channel) => channel.name == "CHANNEL_NAME");
channel.send("Hello");

频道ID

const channel = client.channels.cache.get((channel) => channel.id == "CHANNEL_ID");
channel.send("Hello");