"typeError: Невозможно прочитать свойство 'username' из undefined." - PullRequest
0 голосов
/ 06 марта 2019

Вот мой код для команды >top10 моего бота разногласий:

const Discord = require("discord.js");

module.exports.run = async(bot, message, args, con) => {

  const top10query = `SELECT user, points, lstmsg FROM scores WHERE guild = '${message.guild.id}' ORDER BY cast(points as SIGNED) ASC LIMIT 10`
  //const top10 = con.query(top10query)

  const query = querytxt => {
    return new Promise((resolve, reject) => {
      con.query(querytxt, (err, results, fields) => {
        if (err) reject(err);
        resolve([results, fields]);
      });
    });
  };
  const [results, fields] = await query(top10query);

  const map1 = results.map(results => `User: ${(bot.fetchUser(results.user)).username} Messages: ${results.points} Last message: ${results.lstmsg}`);
  message.channel.send(map1)
}
module.exports.help = {
  name: "top10",
  usage: "``prefix`` top10",
  description: "top 10 points",
}

Данные для «пользователя» сохраняются как идентификатор пользователя. Я получаю 'undefined', когда использую команду> top10.

undefined user

Есть идеи?


EDIT:
Я пытался заменить

const map1 = results.map(results => `User: ${(bot.fetchUser(results.user)).username} Messages: ${results.points} Last message: ${results.lstmsg}`);
      message.channel.send(map1)

С

const map1 = results.map(results => `User: ${(bot.users.get(results.user.id)).username} Messages: ${results.points} Last message: ${results.lstmsg}`);

Но я получаю эту ошибку:

(node:21128) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'username' of undefined

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Вы хотите сделать

const map1 = await results.map(async result => {
        const user = await client.fetchUser(result);
        return `User: ${user.username} Messages: ${result.points} Last message: ${result.lstmsg}`; 
});
0 голосов
/ 06 марта 2019

Заменить

User: ${(bot.fetchUser(results.user)).username

с:

User: ${bot.users.get(results.user).username
...