使用 Distube 包拉出哪个频道发布歌曲时出错

Error while pulling which channel published the song using Distube package

我正在使用 distube.js 执行 'Now Playing' 命令,但是当我尝试从发布歌曲的频道中提取信息时,结果显示为 'undefined' nowplaying embed image

这些是 track informations

有没有人有任何提示可以帮助我?

我目前的代码

const { MessageEmbed } = require("discord.js");
const { errorbuilder } = require("../../handlers/functions");
const ee = require("../../botconfig/embed.json");
const bar = require(`stylish-text`)

module.exports = {
  name: "nowplaying",
  description: "Mostra os detalhes da música que está tocando",
  permissions: ['SEND_MESSAGES'],
  usage: "",
  aliases: ["np", "nowplay"],
  execute: async (client, message, args, Discord, cmd) => {
    try {
      const { channel } = message.member.voice;
      if (!channel)
        return message.channel.send(new MessageEmbed()
          .setColor(ee.wrongcolor)
          .setFooter(ee.footertext)
          .setTitle(`❌ ERROR | Por favor entre em um canal primeiro`)
        );
      if (!client.distube.getQueue(message))
        return message.channel.send(new MessageEmbed()
          .setColor(ee.wrongcolor)
          .setFooter(ee.footertext)
          .setTitle(`❌ ERROR | Eu não estou tocando nada`)
          .setDescription(`Fila vazia`)
        );
      if (client.distube.getQueue(message) && channel.id !== message.guild.me.voice.channel.id)
        return message.channel.send(new MessageEmbed()
          .setColor(ee.wrongcolor)
          .setFooter(ee.footertext)
          .setTitle(`❌ ERROR | Por favor entre no **meu** canal`)
          .setDescription(`Canal: <#${message.guild.me.voice.channel.id}>`)
        );

      let queue = client.distube.getQueue(message);
      let track = queue.songs[0];
      console.log(track)

      function toReadableTime(given) {
        var time = given;
        var minutes = "0" + Math.floor(time / 60);
        var seconds = "0" + (time - minutes * 60);
        return minutes.substr(-2) + ":" + seconds.substr(-2);
      }

      const current = Math.floor(queue.connection.dispatcher.streamTime / 1000) //ms --> seconds
      const end = track.duration //video in seconds

      const value = (current * (100 / end) / 5)

      bar.default.full = "█";
      bar.default.empty = " - ";
      bar.default.start = "";
      bar.default.end = "";
      bar.default.text = "{bar}";

      let npEmbed = new MessageEmbed()
        .setColor(ee.color)
        .setFooter(ee.footertext)
        .setTitle(`:musical_note: ${track.name}`)
        .setURL(track.url)
        .setThumbnail(track.thumbnail)
        .addField("Views", `:eye: \`${track.views}\``, true)
        .addField("Likes", `:thumbsup: \`${track.likes}\``, true)
        .addField("Dislikes", `:thumbsdown: \`${track.dislikes}\``, true)
        .addField("Voice Channel", `<#${message.guild.me.voice.channel.id}>`, true)
        .addField("By", `${track.channelName}`, true)
        .addField('Play/Resume', client.distube.isPaused(message) === true ? "▶" : "⏸", true)
        .addField("Duration: ", `${toReadableTime(current)} - [${bar.progress(20, value)}] - ${track.formattedDuration}`)

      message.channel.send(npEmbed)
      message.delete();
    } catch (e) {
      errorbuilder(e, message)
    }
  }
}

可能有用的信息

Discord.js版本:12.5.3 Distube 版本: 2.8.15 文体版:1.1.3

我不确定 channelName 是什么,我在你的 track information 中找不到它 更改此行:

 .addField("By", `${track.channelName}`, true) //change this
 .addField("By", `${track.name.split(" - ")[0]}`, true) //to this

NOTE: If every song you play as the artists name infront of the songs name, seperated with a - this should work all the time.

或者,您也可以像这样设置 youtube 频道的名称:

 .addField("By", `${track.info.videoDetails.ownerChannelName}`, true)