首页 > 解决方案 > Discord.JS 向标记的用户发送消息

问题描述

我正在制作一个命令,该命令从中读取一个元素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)

标签: javascriptnode.jsdiscorddiscord.js

解决方案


您可以使用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);
  }
});

在此处输入图像描述

在此处输入图像描述


推荐阅读