0

我正在使用 distube.js 执行“正在播放”命令,但是当我尝试从发布歌曲的频道中提取信息时,它显示为“未定义”正在播放嵌入图像

这些是曲目信息

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

我到目前为止的代码

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 = "█&quot;;
      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 ? "▶&quot; : "⏸&quot;, 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

4

1 回答 1

0

我不确定,是什么,我在您的曲目信息channelName中的任何地方都找不到它 更改此行:

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

注意:如果您播放的每首歌曲都作为歌曲名称前面的艺术家名称播放,则用 a 分隔-应该一直有效。

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

 .addField("By", `${track.info.videoDetails.ownerChannelName}`, true)
于 2021-08-05T17:56:08.047 回答