У меня есть команда, которая показывает топ онлайна по голосовому онлайну
Я бы хотел чтобы она не показывала те значение где фигурирует "0"
То есть, если у участника онлайн 0h 9m 0s, то покажет только его 9m
const Command = require('../../structures/Command.js');
const MemberModel = require('../../models/Member.js');
const { MessageEmbed } = require('discord.js');
class Top extends Command {
constructor(...args) {
super(...args);
}
async run(message) {
let embed = new MessageEmbed()
let guild = message.guild,
ranks = await MemberModel
.find({ guildId: guild.id })
.sort({ voiceTime: 'desc' })
.limit(10),
i = 1;
ranks.forEach(rank => {
let voiceonline = rank.voiceTime;
let member = guild.members.cache.get(rank.fullId.split('-')[1]);
function convertSecondsToTime(usePad = false) {
let seconds = voiceonline
let minutes = Math.floor(voiceonline / 60)
let hours = Math.floor(minutes / 60)
seconds = seconds % 60
minutes = minutes % 60
const pad = num => {
const n = num.toString()
return n > 9 ? '' + n : '' + n
}
return {
h: (usePad) ? pad(hours) : hours,
m: (usePad) ? pad(minutes) : minutes,
s: (usePad) ? pad(seconds) : seconds,
}
}
let timev = convertSecondsToTime(voiceonline)
if (member) {
embed.addField(`#${i++} — ${member.user.tag}`, `**${timev.h}**h **${timev.m}**m **${timev.s}**s`);
}
})
embed.setTitle("ТОП-10 голосового онлайна")
embed.setColor("#36393f");
embed.setFooter(`Выполнил(а) ${message.author.tag}`, message.author.displayAvatarURL({ size: 1024, dynamic : true}));
embed.setTimestamp();
message.channel.send(embed);
}
}
module.exports = Top;