import emojis from "../config/emojis.js"; import _ from "lodash"; interface EmojisIndex { [key: string]: string | EmojisIndex | EmojisIndex[]; } const EMOJIPATHS: string[] = []; function getEmojiPaths(obj: EmojisIndex, path: string[] = []) { for (const key in obj) { if (typeof obj[key] === "string") { EMOJIPATHS.push([...path, key].join(".")); } else { getEmojiPaths(obj[key] as EmojisIndex, [...path, key]); } } } getEmojiPaths(emojis); function getEmojiByName(name: typeof EMOJIPATHS[number], format?: string): string { const parts = name.split("."); let id: string | EmojisIndex | EmojisIndex[] | undefined = emojis; for (const part of parts) { if (typeof id === "string" || id === undefined) { throw new Error(`Emoji ${name} not found`); } if (_.isArray(id)) { id = id[parseInt(part)]; } else { id = id[part]; } } if (typeof id !== "string" && id !== undefined) { throw new Error(`Emoji ${name} not found`); } return getEmojiFromId(id, format); } function getEmojiFromId(id: string | undefined, format?: string): string { if (format === "id") { if (id === undefined) return "0"; return id.toString(); } if (id === undefined) { return ""; } else if (id.toString().startsWith("a")) { return ``; } return `<:N:${id}>`; } export default getEmojiByName;