如何通过 USER ID 和 @Mention 发送 DM 消息?

时间:2021-03-19 11:42:23

标签: javascript discord discord.js

如何让bot给用户写私信,并通过指定的USER ID,并提及

示例:

!private 660033203473743873 Hello
!private @User Hello

我的代码

client.on('message', message => {

  if (!message.content.startsWith(prefix) || message.author.bot) return;

  const args = message.content.slice(prefix.length).trim().split(' ');
  const command = args.shift().toLowerCase();
  const member = message.mentions.members.first() || message.guild.members.cache.get(args[0]);

  if (command === 'private') {

      member.send({
      content: `${args[1]}`,
    });
}
});

1 个答案:

答案 0 :(得分:0)

您似乎错误地使用了 args
args 是整个消息的数组,因此在您的情况下 args[0] 将返回 !private
工作示例:

client.on('message', async message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return; //If message is sent by a bot or does not start with the prefix
    const args = message.content.slice(prefix.length).trim().split(/ +/g); //Getting the message arguments
    const command = args.shift().toLowerCase(); //Receiving the command

    if (!args[1]) return message.channel.send("Please provide a user to message."); //If user was not provided
    const member = message.mentions.members.first() || message.guild.members.cache.get(args[1]); //Get the member
    if (!member) return message.channel.send("I could not find the user you provided"); //If the member was not found
    if (!member.id || !member.tag) member = member.user; //Making sure the user is correct

    try {
        member = await message.guild.members.fetch(user); //Getting the guild member
    } catch() {
        member = null;
    }
    if (!member) return message.channel.send("The user you mentioned is not in this server."); //Double checking the user is in the server

    if (command.toLowerCase() == "private") { //Command is equal to private
        member.send(args.slice(1).join(" ")); //Send the member a message
    }
});