简体   繁体   English

Discord.js ID 支持 DM 命令

[英]Discord.js ID support for DM command

I am trying to make a DM command in discord.js that dms a mentioned user.我正在尝试在 discord.js 中发出一个 DM 命令,该命令对提到的用户进行 dms。 i wanted to allow support so you could either mention a user to dm, or just use their id.我想允许支持,这样您就可以向 dm 提及用户,或者只使用他们的 ID。 this is my code:这是我的代码:

      let nodmperm = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setDescription("ERROR: Missing permissions: `MANAGE_MESSAGES`");
  // if (!message.member.hasPermission("MANAGE_MESSAGES"))
  //   return message.channel.send(nodmperm);
  let nospecdm = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setDescription("ERROR: No valid user was specified to DM");
  if (!args[1]) return message.channel.send(nospecdm);
  let dUser =
    message.guild.member(message.mentions.users.first()) ||
    bot.users.cache.get(args[0]);
  let nouserfound = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setDescription(`ERROR: No user found by the name of ${args[1]}`);
  if (!dUser) return message.channel.send(nouserfound);
  let dMessage = args.join(" ").slice(25);
  let nomsgsup = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setDescription("ERROR: No message was supplied");
  if (dMessage.length < 1) return message.channel.send(nomsgsup);
  let dmsoff = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setDescription(
      `ERROR: Unable to DM ${dUser} because they either have DMs off, or they have blocked Outlet`
    );

  let sentsucc = new Discord.MessageEmbed()
    .setColor("#8f82ff")
    .setTitle("Message was successfully sent")
    .addField("Target: ", `${dUser} (ID: ${dUser.id}) (Discriminator: ${message.mentions.users.first().discriminator})`)
    .addField("Message Content: ", dMessage)
    .setFooter(message.createdAt)
    .setTimestamp();
  let userDM = new Discord.MessageEmbed()
    .setTitle("You received a DM")
    .setColor("#8f82ff")
    .addField("Sender: ", `${message.author} (ID: ${message.author.id})`)
    .addField("Server sent from: ", message.guild.name)
    .addField("Server Channel: ", "#" + message.channel.name)
    .addField("Message Content: ", dMessage)
    .addField("Message URL: ", message.url)
    .setFooter(`${message.createdAt}`)
    .setTimestamp();
  dUser
    .send(userDM)
    .then(() => message.channel.send(sentsucc))
    .catch(err => {
      message.channel
        .send(dmsoff)
        .catch(err =>
          console.error(`Error while sending error message...\n`, err)
        );
    });

I cant seem to get it to work tho, i cannot get the args to fluctuate properly, im not too sure how i could fix this so you could either mention a user to dm, or use their id我似乎无法让它工作,我无法让 args 正常波动,我不太确定如何解决这个问题,所以你可以向 dm 提及用户,或者使用他们的 id

I am trying to make a DM command in discord.js that dms a mentioned user.我正在尝试在 discord.js 中发出一个 DM 命令,该命令对提到的用户进行 dms。 i wanted to allow support so you could either mention a user to dm, or just use their id.我想允许支持,这样您就可以向 dm 提及用户,或者只使用他们的 ID。 this is my code:这是我的代码:

      let nodmperm = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setDescription("ERROR: Missing permissions: `MANAGE_MESSAGES`");
  // if (!message.member.hasPermission("MANAGE_MESSAGES"))
  //   return message.channel.send(nodmperm);
  let nospecdm = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setDescription("ERROR: No valid user was specified to DM");
  if (!args[1]) return message.channel.send(nospecdm);
  let dUser =
    message.guild.member(message.mentions.users.first()) ||
    bot.users.cache.get(args[0]);
  let nouserfound = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setDescription(`ERROR: No user found by the name of ${args[1]}`);
  if (!dUser) return message.channel.send(nouserfound);
  let dMessage = args.join(" ").slice(25);
  let nomsgsup = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setDescription("ERROR: No message was supplied");
  if (dMessage.length < 1) return message.channel.send(nomsgsup);
  let dmsoff = new Discord.MessageEmbed()
    .setColor("#e31212")
    .setDescription(
      `ERROR: Unable to DM ${dUser} because they either have DMs off, or they have blocked Outlet`
    );

  let sentsucc = new Discord.MessageEmbed()
    .setColor("#8f82ff")
    .setTitle("Message was successfully sent")
    .addField("Target: ", `${dUser} (ID: ${dUser.id}) (Discriminator: ${message.mentions.users.first().discriminator})`)
    .addField("Message Content: ", dMessage)
    .setFooter(message.createdAt)
    .setTimestamp();
  let userDM = new Discord.MessageEmbed()
    .setTitle("You received a DM")
    .setColor("#8f82ff")
    .addField("Sender: ", `${message.author} (ID: ${message.author.id})`)
    .addField("Server sent from: ", message.guild.name)
    .addField("Server Channel: ", "#" + message.channel.name)
    .addField("Message Content: ", dMessage)
    .addField("Message URL: ", message.url)
    .setFooter(`${message.createdAt}`)
    .setTimestamp();
  dUser
    .send(userDM)
    .then(() => message.channel.send(sentsucc))
    .catch(err => {
      message.channel
        .send(dmsoff)
        .catch(err =>
          console.error(`Error while sending error message...\n`, err)
        );
    });

I cant seem to get it to work tho, i cannot get the args to fluctuate properly, im not too sure how i could fix this so you could either mention a user to dm, or use their id我似乎无法让它工作,我无法让 args 正常波动,我不太确定如何解决这个问题,所以你可以向 dm 提及用户,或者使用他们的 id

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM