使用 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)
我正在使用 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)