繁体   English   中英

Discord.JS 向标记用户发送消息

[英]Discord.JS Send message to tagged user

我正在制作一个从args读取元素然后将其发送给标记用户的命令,但出现错误。

我的代码:

if (cmd === '!message'){
   if (!message.mentions.users.size) {
      message.channel.send("```Send Message to: ?```")
   } else {
      const username = args[1];
      const fetchuser = guild.members.fetch(username.id)
      var message = args[2];
      fetchuser.message.send(`${message.author} send you a message: ${message}`)
   }
}

错误:

 UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'username' of undefined
at Client.<anonymous> (/home/container/index.js:373:29)
at Client.emit (events.js:314:20)
at MessageCreateAction.handle (/home/container/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (/home/container/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)

您可以使用message.mentions.members.first()来获取标记的成员。 如果您使用mentions.members而不是mentions.users ,则不需要获取公会成员:

client.on('message', (message) => {
  if (message.author.bot) return;
  const args = message.content.slice(prefix.length).split(/ +/);
  const command = args.shift().toLowerCase();

  if (command === 'message') {
    const mentionedMember = message.mentions.members.first();

    if (!mentionedMember) {
      return message.reply('You need to mention someone!');
    }

    const text = args.slice(1).join(' ');
    mentionedMember.send(text);
  }
});

在此处输入图像描述

在此处输入图像描述

请确保您已定义args ,但这里有一个使用 args 对指定用户进行 DMing 的快速示例:

let dmUser = message.mentions.users.first();
let dmArgs = args.join(" ").slice(8);
dmUser.send(dmArgs);

请随意更改您喜欢的方式。 基本上,它的作用是设置一个新的let变量,等于从发送消息的服务器获取提到的用户。 dmArgs变量只是一种更有条理的存储 args 的方式,我使用 .slice 来分割命令和所需参数的前缀。 最后,你发送它。

暂无
暂无

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

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