discord.js node.js проблема обещания объекта кода

#javascript #node.js #discord

#javascript #node.js #Discord

Вопрос:

 client.on('message', message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;
  
    const args = message.content.slice(prefix.length).trim().split(/  /);
    const command = args.shift().toLowerCase();
    let member = message.guild.members;
      if (command === 'ping') {
            message.channel.send(`${srv.getServerName().then()}`)
        }
});
  

У меня есть такая кодировка, когда я пишу ping из канала, он должен писать servername, но он пишет object promise. Как я могу ее решить?
Извините, мой английский не очень хорош, я использую Google translate.

Ответ №1:

Кажется srv.getServerName() , это обещание, и вы отправляете его вместо разрешенного значения на свой канал. Вот почему ты видишь [object Promise] .

Сначала вы можете получить имя сервера и отправить сообщение из его .then() метода:

 if (command === 'ping') {
  srv
    .getServerName()
    .then(name => message.channel.send(name))
}
  

Или вы можете сделать обратный вызов async функцией и await ответом перед его отправкой:

 client.on('message', async (message) => {
  if (!message.content.startsWith(prefix) || message.author.bot) return;

  const args = message.content.slice(prefix.length).trim().split(/  /);
  const command = args.shift().toLowerCase();
  const member = message.guild.members;

  if (command === 'ping') {
    const serverName = await srv.getServerName();
    const embed = new MessageEmbed()
      .setTitle('Embed title')
      .setDescription(`This is the "${serverName}" server`);

    message.channel.send(embed);
  }
});