【问题标题】:I am trying to show roles in my !!userinfo command but I get errors我试图在我的 !!userinfo 命令中显示角色,但出现错误
【发布时间】:2019-07-01 18:22:49
【问题描述】:

我有一个!!userinfo 命令,我正在尝试将它带到我可以@anyone 的地方,它在那里显示了我如何让其他一切工作的信息,但后来我遇到了这个问题,这是错误。

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'map' of undefined

我查了一下没有答案,但我确实想出了一些东西,它说这通常意味着无人居住,但我不知道如何把它放进去。

const Discord = module.require("discord.js");
const fs = require("fs");
const userdata = JSON.parse(fs.readFileSync('commands/storage/userdata.json', 'utf8'));

module.exports.run = async (bot, message, args) => {
    let member;
    if (message.mentions.users > 0) {
        member = message.mentions.user.size()
    } else {
        member = message.author
    }
    let user;
    if (message.mentions.users > 0) {
        user = message.mentions.user.size()
    } else {
        user = message.author
    }

    embed = new Discord.RichEmbed()
        .setAuthor(message.member.username)
        .setDescription("Users Info", true)
        .setColor("#64FF00", true)
        .addField("Full Username:", `${message.member.username}${message.member.discriminator}`, true)
        .addField("ID:", message.member.id, true)
        .addField("Created at:", message.member.createdAt, true)
        .addField("Status:", `${user.presence.status}`, true)
        .addField("Game:", `${user.presence.game}`, true)
        .addField("Roles", member.roles.map(r => `${r}`).join('|'), true);

    message.channel.send(embed);
}

module.exports.help = {
    name: "userinfo"
}

我想要它,这样我就可以@anyone 并且有信息出现

【问题讨论】:

  • 在执行 RichEmbed 之前,请检查 member 是什么以及它是否包含 roles 属性,因为您的问题似乎来自 member.roles.map(r => ${r}).join('|')
  • @George 成员确实包含角色

标签: javascript discord discord.js


【解决方案1】:

我认为问题在于如何为变量member 赋值。除此之外,我认为你有一些冗余代码,因为你有一个变量 member 和一个变量 user ,你用相同的代码给它们一个值。

您可以在下面找到我重写的代码。试一试,让我知道结果如何。

module.exports.run = async (bot, message, args) => {
  let guildMember;

  if (message.mentions.members.first()) {
    guildMember = message.mentions.members.first();
  } else {
    guildMember = message.member;
  }

  // We need the User object aswell for different properties
  const user = guildMember.user;

  let embed = new Discord.RichEmbed()
    .setAuthor(user.username)
    .setDescription("Users Info", true)
    .setColor("#64FF00", true)
    .addField("Full Username:", `${user.username}${user.discriminator}`, true)
    .addField("ID:", user.id, true)
    .addField("Created at:", user.createdAt, true)
    .addField("Status:", `${user.presence.status}`, true)
    .addField("Game:", `${user.presence.game}`, true)
    .addField("Roles", guildMember.roles.map(r => `${r}`).join('|'), true);

  message.channel.send(embed);
}

【讨论】:

    【解决方案2】:

    您可以轻松制作第一部分:

    let member;
    if (message.mentions.users > 0) {
        member = message.mentions.user.size()
    } else {
        member = message.author
    }
    let user;
    if (message.mentions.users > 0) {
        user = message.mentions.user.size()
    } else {
        user = message.author
    }
    

    进入:

    const user = message.mentions.users.first() || message.author;
    const member = message.mentions.members.first() || message.member;
    if(!member) return message.channel.send('This command can only be run in a guild!')
    

    您还想将嵌入位更改为:

    let embed = new Discord.RichEmbed()
        .setAuthor(user.tag)
        .setDescription("Users Info", true)
        .setColor("#64FF00", true)
        .addField("Full Username:", user.tag , true)
        .addField("ID:", user.id, true)
        .addField("Created at:", user.createdAt, true)
        .addField("Status:", user.presence.status , true)
        .addField("Game:", user.presence.game ? user.presence.game : 'none' , true)
        .addField("Roles", member.roles.map(r => `${r}`).join(' | '), true);
     message.channel.send(embed);
    

    【讨论】:

      【解决方案3】:

      这会将member 设置为一个数字

      member = message.mentions.user.size()
      

      由于member 现在是一个数字,因此尝试访问member.roles 会导致undefined。由于undefined 没有.map 方法,您会看到该异常。

      【讨论】:

      • 我改成 member = message.mentions.user() 还是一样的错误
      猜你喜欢
      • 2021-02-14
      • 2019-04-14
      • 2021-11-15
      • 2022-01-21
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多