discord-player-play-dl/src/utils/Util.ts

57 lines
1.7 KiB
TypeScript
Raw Normal View History

2021-06-13 21:47:04 +05:00
import { StageChannel, VoiceChannel } from "discord.js";
2021-06-13 17:03:20 +05:00
import { TimeData } from "../types/types";
class Util {
static durationString(durObj: object) {
return Object.values(durObj)
.map((m) => (isNaN(m) ? 0 : m))
.join(":");
}
static parseMS(milliseconds: number) {
const round = milliseconds > 0 ? Math.floor : Math.ceil;
return {
days: round(milliseconds / 86400000),
hours: round(milliseconds / 3600000) % 24,
minutes: round(milliseconds / 60000) % 60,
seconds: round(milliseconds / 1000) % 60
} as TimeData;
}
static buildTimeCode(duration: TimeData) {
const items = Object.keys(duration);
const required = ["days", "hours", "minutes", "seconds"];
const parsed = items.filter((x) => required.includes(x)).map((m) => (duration[m as keyof TimeData] > 0 ? duration[m as keyof TimeData] : ""));
const final = parsed
.filter((x) => !!x)
.map((x) => x.toString().padStart(2, "0"))
.join(":");
return final.length <= 3 ? `0:${final.padStart(2, "0") || 0}` : final;
}
2021-06-13 17:43:36 +05:00
static last<T = any>(arr: T[]): T {
if (!Array.isArray(arr)) return;
return arr[arr.length - 1];
}
2021-06-13 21:47:04 +05:00
static isVoiceEmpty(channel: VoiceChannel | StageChannel) {
return channel.members.filter((member) => !member.user.bot).size === 0;
}
2021-06-14 18:50:36 +05:00
static require(id: string) {
try {
return require(id);
} catch {
return null;
}
}
2021-06-17 18:22:03 +05:00
static wait(time: number) {
return new Promise((r) => setTimeout(r, time).unref());
}
2021-06-13 17:03:20 +05:00
}
2021-06-13 23:28:37 +05:00
export { Util };