Я пытаюсь показать роли в моей команде !! userinfo, но получаю ошибки - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть команда !!userinfo, и я пытаюсь получить ее там, где могу @anyone, и там показывается информация о том, как у меня все остальное работает, но потом я столкнулся с этой проблемой, вот ошибка.

UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать свойство 'map' из неопределенного

Я посмотрел его без ответа, но я нашел что-то, что, как он сказал, обычно означает, что этоне населенный, но я не знаю, как получить это там.

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, и там появляется информация

Ответы [ 3 ]

0 голосов
/ 08 февраля 2019

Вы можете легко сделать первую часть:

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);
0 голосов
/ 08 февраля 2019

Я считаю, что проблема заключается в том, как вы присваиваете значение переменной 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);
}
0 голосов
/ 07 февраля 2019

Это устанавливает member в число

member = message.mentions.user.size()

Поскольку member теперь число, попытка доступа к member.roles приводит к undefined.И поскольку undefined не имеет метода .map, вы видите это исключение.

...