Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 3x 3x 3x 3x 3x | import util from "node:util";
import { NestedLocalizationAdapter, TranslationFn } from "@necord/localization";
import { BaseMessageOptions, CommandInteraction, EmbedBuilder, MessageEditOptions } from "discord.js";
import ms from "parse-ms";
export const Timer = async (
translate: NestedLocalizationAdapter | TranslationFn,
type: "normal" | "details",
number: number,
translateInfo: string,
): Promise<string> => {
const time = ms(number);
const days =
translate instanceof NestedLocalizationAdapter
? (translate as NestedLocalizationAdapter).getTranslation("Tools/Tools:Timer:Days", translateInfo)
: (translate as TranslationFn)("Tools/Tools:Timer:Days");
const hours =
translate instanceof NestedLocalizationAdapter
? (translate as NestedLocalizationAdapter).getTranslation("Tools/Tools:Timer:Hours", translateInfo)
: (translate as TranslationFn)("Tools/Tools:Timer:Hours");
const minutes =
translate instanceof NestedLocalizationAdapter
? (translate as NestedLocalizationAdapter).getTranslation("Tools/Tools:Timer:Minutes", translateInfo)
: (translate as TranslationFn)("Tools/Tools:Timer:Minutes");
const seconds =
translate instanceof NestedLocalizationAdapter
? (translate as NestedLocalizationAdapter).getTranslation("Tools/Tools:Timer:Seconds", translateInfo)
: (translate as TranslationFn)("Tools/Tools:Timer:Seconds");
switch (type) {
case "normal":
return ` ${time.hours ? (time.hours > 10 ? time.hours : `0${time.hours}`) : ""}${time.hours ? ":" : ""}${
time.minutes ? (time.minutes >= 10 ? time.minutes : `0${time.minutes}`) : "00"
}:${time.seconds ? (time.seconds > 10 ? time.seconds : `0${time.seconds}`) : ""}`;
case "details":
return `
${days}${time.hours ? (time.days > 10 ? time.days : `0${time.days}`) : ""}${time.days ? ":" : ""}
${hours}${time.hours ? (time.hours > 10 ? time.hours : `0${time.hours}`) : ""}${time.hours ? ":" : ""}
${minutes}${time.minutes ? (time.minutes >= 10 ? time.minutes : `0${time.minutes}`) : "00"}
${seconds}${time.seconds ? (time.seconds > 10 ? time.seconds : `0${time.seconds}`) : ""}
`;
}
};
export const messageOptions = (content: string | EmbedBuilder | BaseMessageOptions): BaseMessageOptions => {
const options: BaseMessageOptions | MessageEditOptions =
typeof content === "string" ? { content } : content instanceof EmbedBuilder ? { embeds: [content] } : content;
return options;
};
export const WAIT = async (time: number): Promise<void> => {
const wait = util.promisify(setTimeout);
return wait(time);
};
export const isValidURL = (string: string): URL | boolean => {
const args = string.split(" ");
let url: URL | boolean;
for (const arg of args) {
try {
url = new URL(arg);
url = url.protocol === "http:" || url.protocol === "https:";
break;
} catch (_) {
url = false;
}
}
return url;
};
export const formatArray = (array: string[]) => {
return new Intl.ListFormat("pt-BR", {
style: "short",
type: "conjunction",
}).format(array);
};
|