【问题标题】:Error while pulling which channel published the song using Distube package使用 Distube 包拉取哪个频道发布歌曲时出错
【发布时间】:2021-10-10 11:48:46
【问题描述】:

我正在使用 distube.js 执行“正在播放”命令,但是当我尝试从发布歌曲的频道中提取信息时,它显示为“未定义”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

【问题讨论】:

    标签: discord discord.js distube


    【解决方案1】:

    我不确定,channelName 是什么,我在你的 track information 的任何地方都找不到 改变这一行:

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

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

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

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

    【讨论】:

    • 谢谢,但我想显示上传者的姓名,所以我复制了第三行代码,但我找到了this error message
    • 对不起,伙计,我看错了 json。我做了一些更改,现在应该可以工作了
    猜你喜欢
    • 2018-08-23
    • 2021-08-14
    • 2021-10-31
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 2013-11-03
    • 1970-01-01
    相关资源
    最近更新 更多