typeError: невозможно прочитать свойство username неопределенного значения.

Вот мой код для команды >top10 моего бота Discord:

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.

неопределенный пользователь

Любые идеи?


РЕДАКТИРОВАТЬ:
Я пытался заменить

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

person QueenInTheNorth    schedule 05.03.2019    source источник
comment
Я предполагаю bot.fetchUser(results.user)).username, что это строка, которая выдает ошибку. Выполняли ли вы какие-либо записи над ним, например, выход results.user, а затем bot.fetchUser(results.user), чтобы убедиться, что вы получаете то, что ожидаете?   -  person Sterling Archer    schedule 06.03.2019
comment
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'id' of undefined когда я вхожу console.log(bot.fetchUser(results.user))   -  person QueenInTheNorth    schedule 06.03.2019
comment
bot.fetchUser(results.user) асинхронный   -  person PLASMA chicken    schedule 06.03.2019
comment
Прежде всего, вы можете просто использовать .fetchUser с учетной записью бота (написано в документации djs). Попробуйте войти, если у вас даже есть пользователь с bot.users.get (...)   -  person Gilles Heinesch    schedule 06.03.2019


Ответы (2)


Заменять

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

с участием:

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

person QueenInTheNorth    schedule 05.03.2019
comment
Я думаю, что было бы предпочтительнее оставить fetchUser () в качестве таблицы лидеров, где пользователи могут не быть в bot.users - person PLASMA chicken; 06.03.2019
comment
Это не функция, это класс / объект - person PLASMA chicken; 07.03.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}`; 
});
person PLASMA chicken    schedule 06.03.2019