From a9b1d5ba67d5ec04afe923ad6b1e6801b242fa4f Mon Sep 17 00:00:00 2001 From: Taken Date: Thu, 14 Nov 2024 17:24:12 +0100 Subject: [PATCH 1/5] Updated intl formatters --- src/commands/guild/info.ts | 8 ++--- src/commands/guild/member.ts | 8 ++--- src/commands/guild/top.ts | 6 ++-- src/events/cron/weeklyGexp.ts | 6 ++-- .../server/guildMemberAdd/logNewJoins.ts | 2 +- src/utils/Functions/intlFormaters.ts | 32 +++++++++++++------ 6 files changed, 37 insertions(+), 25 deletions(-) diff --git a/src/commands/guild/info.ts b/src/commands/guild/info.ts index 93eb38e..f2f7c90 100644 --- a/src/commands/guild/info.ts +++ b/src/commands/guild/info.ts @@ -108,10 +108,10 @@ export default async function guildInfo(interaction: ChatInputCommandInteraction const guildCreated = new Date(guildCreatedMS) const guildTag = guild!.tag const guildExpUnformatted = guild!.exp - const guildExp = numberFormatter.format(guildExpUnformatted) + const guildExp = numberFormatter(guildExpUnformatted) const guildLvl = guildLevel(guildExpUnformatted) const guildMembers = guild!.members - const guildCreatedTime = dateTimeFormatter.format(guildCreated) + const guildCreatedTime = dateTimeFormatter(guildCreated) const guildOwner = guildMembers.find(m => m.rank === "Guild Master")!.uuid const guildOwnerName = await getIGN(guildOwner) @@ -124,10 +124,10 @@ export default async function guildInfo(interaction: ChatInputCommandInteraction }) const totalGuildMembersWeeklyXPUnformatted = guildMembersWeeklyXP.reduce((a, b) => a + b, 0) - const totalGuildMembersWeeklyXP = numberFormatter.format(totalGuildMembersWeeklyXPUnformatted) + const totalGuildMembersWeeklyXP = numberFormatter(totalGuildMembersWeeklyXPUnformatted) const averageGuildMembersWeeklyXPUnformatted = Math.round(totalGuildMembersWeeklyXPUnformatted / 7) - const averageGuildMembersWeeklyXP = numberFormatter.format(averageGuildMembersWeeklyXPUnformatted) + const averageGuildMembersWeeklyXP = numberFormatter(averageGuildMembersWeeklyXPUnformatted) await interaction.editReply({ embeds: [{ diff --git a/src/commands/guild/member.ts b/src/commands/guild/member.ts index 869d5ea..01c8ce5 100644 --- a/src/commands/guild/member.ts +++ b/src/commands/guild/member.ts @@ -102,17 +102,17 @@ export default async function guildMember(interaction: ChatInputCommandInteracti const guildRank = guildMember!.rank const memberGexp = guildMember!.expHistory const allDaysGexp = Object.keys(memberGexp).map(key => { - return ("**➺ " + key + ":** " + "`" + numberFormatter.format(memberGexp[key]) + "`" + "\n") + return ("**➺ " + key + ":** " + "`" + numberFormatter(memberGexp[key]) + "`" + "\n") }) const expValue = allDaysGexp.join("") const totalWeeklyGexpUnformatted = Object.values(memberGexp).reduce((a, b) => a + b, 0) - const totalWeeklyGexp = numberFormatter.format(totalWeeklyGexpUnformatted) + const totalWeeklyGexp = numberFormatter(totalWeeklyGexpUnformatted) const averageWeeklyGexpUnformatted = Math.round(totalWeeklyGexpUnformatted / 7) - const averageWeeklyGexp = numberFormatter.format(averageWeeklyGexpUnformatted) + const averageWeeklyGexp = numberFormatter(averageWeeklyGexpUnformatted) const guildMemberJoinMS = guildMember!.joined const guildMemberJoinTime = new Date(guildMemberJoinMS) - const guildMemberJoin = dateTimeFormatter.format(guildMemberJoinTime) + const guildMemberJoin = dateTimeFormatter(guildMemberJoinTime) await interaction.editReply({ embeds: [{ diff --git a/src/commands/guild/top.ts b/src/commands/guild/top.ts index 1f75e73..7ae59d6 100644 --- a/src/commands/guild/top.ts +++ b/src/commands/guild/top.ts @@ -114,10 +114,10 @@ export default async function guildTop(interaction: ChatInputCommandInteraction) const gexpTodayUnformatted = guildMembers.map(member => { return member.expHistory[Object.keys(member.expHistory)[0]] }).reduce((a, b) => a + b, 0) - const gexpToday = numberFormatter.format(gexpTodayUnformatted) + const gexpToday = numberFormatter(gexpTodayUnformatted) const averageGuildMemberGEXPUnformatted = Math.floor(gexpTodayUnformatted / guildMembers.length) - const averageGuildMemberGEXP = numberFormatter.format(averageGuildMemberGEXPUnformatted) + const averageGuildMemberGEXP = numberFormatter(averageGuildMemberGEXPUnformatted) const allMembersDailyGEXP = guildMembers.map(member => { return { @@ -178,7 +178,7 @@ export default async function guildTop(interaction: ChatInputCommandInteraction) const sliceSize = amount / 4 for (let i = 0; i < amount; i++) { - const gexp = numberFormatter.format(topMembers[i].gexp) + const gexp = numberFormatter(topMembers[i].gexp) const ign = guildData.find(member => member.uuid === topMembers[i].uuid)?.ign const position = i + 1 diff --git a/src/events/cron/weeklyGexp.ts b/src/events/cron/weeklyGexp.ts index 08c113b..96dab76 100644 --- a/src/events/cron/weeklyGexp.ts +++ b/src/events/cron/weeklyGexp.ts @@ -40,7 +40,7 @@ async function guildWeekly() { for (let i = 0; i < allMembersGexpSorted.length; i++) { const ign = await getIGN(allMembersGexpSorted[i].uuid) - const gexp = numberFormatter.format(allMembersGexpSorted[i].exp) + const gexp = numberFormatter(allMembersGexpSorted[i].exp) const position = i + 1 guildMembersList.push("**#" + position + " " + ign + ":** `" + gexp + "`") } @@ -66,8 +66,8 @@ async function guildWeekly() { const averageGuildMembersDailyXPUnformatted = totalGuildMembersWeeklyXPUnformatted / 7 // final values - const totalGuildMembersWeeklyXP = numberFormatter.format(totalGuildMembersWeeklyXPUnformatted) - const averageGuildMembersWeeklyXP = numberFormatter.format(averageGuildMembersDailyXPUnformatted) + const totalGuildMembersWeeklyXP = numberFormatter(totalGuildMembersWeeklyXPUnformatted) + const averageGuildMembersWeeklyXP = numberFormatter(averageGuildMembersDailyXPUnformatted) await message.edit({ embeds: [{ diff --git a/src/events/server/guildMemberAdd/logNewJoins.ts b/src/events/server/guildMemberAdd/logNewJoins.ts index b3854f6..01f5a27 100644 --- a/src/events/server/guildMemberAdd/logNewJoins.ts +++ b/src/events/server/guildMemberAdd/logNewJoins.ts @@ -12,7 +12,7 @@ export default { embeds: [{ title: "New Member", description: userMention(member.id) + " has joined the server.\n" + - "Account created: " + dateTimeFormatter.format(member.user.createdAt), + "Account created: " + dateTimeFormatter(member.user.createdAt), color: embedColor, thumbnail: { url: member.user.avatarURL() || "" diff --git a/src/utils/Functions/intlFormaters.ts b/src/utils/Functions/intlFormaters.ts index 7d42823..77acf5c 100644 --- a/src/utils/Functions/intlFormaters.ts +++ b/src/utils/Functions/intlFormaters.ts @@ -1,12 +1,24 @@ -const numberFormatter = new Intl.NumberFormat("en-US") +export function numberFormatter(d: number): string { + return new Intl.NumberFormat("en-US").format(d) +} -const dateTimeFormatter = new Intl.DateTimeFormat("hr-HR", { - year: "numeric", - month: "numeric", - day: "numeric", - hour: "numeric", - minute: "numeric", - second: "numeric" -}) +export function dateTimeFormatter(d: Date): string { + return new Intl.DateTimeFormat("hr-HR", { + year: "numeric", + month: "numeric", + day: "numeric", + hour: "numeric", + minute: "numeric", + second: "numeric" + }).format(d) +} -export { dateTimeFormatter, numberFormatter } +export function logTimeFormatter(d: Date): string { + return new Intl.DateTimeFormat("hr-HR", { + year: "numeric", + month: "numeric", + day: "numeric", + hour: "numeric", + minute: "numeric" + }).format(d) +} From 0f583206b3c7abba46190563d754f79a1ab74564 Mon Sep 17 00:00:00 2001 From: Taken Date: Thu, 14 Nov 2024 17:25:26 +0100 Subject: [PATCH 2/5] Added logger function --- src/utils/Logger.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/utils/Logger.ts diff --git a/src/utils/Logger.ts b/src/utils/Logger.ts new file mode 100644 index 0000000..4ef4693 --- /dev/null +++ b/src/utils/Logger.ts @@ -0,0 +1,21 @@ +import { colorCustom as c } from "./Functions/colors.js" +import { logTimeFormatter } from "./Functions/intlFormaters.js" + +const AllLogs = { + info: { m: "INFO", c: null }, + error: { m: "ERROR", c: "#ff6666" }, + warn: { m: "WARN", c: "#ffcc99" }, + debug: { m: "DEBUG", c: "#66ff66" } +} as const + +type LogType = keyof typeof AllLogs + +export function log(m: string, t: LogType = "info"): void { + const date = new Date() + const time = logTimeFormatter(date) + const logType = AllLogs[t].m + const logColor = AllLogs[t].c + + const message = `[${logType}] ${time} | ${m}` + console.log(logColor ? c(message, logColor) : message) +} From c868edcae4625bad82833f072d2357e5c41dd973 Mon Sep 17 00:00:00 2001 From: Taken Date: Thu, 14 Nov 2024 18:03:26 +0100 Subject: [PATCH 3/5] Updated loger --- src/utils/Logger.ts | 50 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/src/utils/Logger.ts b/src/utils/Logger.ts index 4ef4693..6dc87b2 100644 --- a/src/utils/Logger.ts +++ b/src/utils/Logger.ts @@ -1,21 +1,63 @@ -import { colorCustom as c } from "./Functions/colors.js" +import chalk from "chalk" import { logTimeFormatter } from "./Functions/intlFormaters.js" +const colors = { + red: "#f38ba8", + lavender: "#b4befe", + green: "#a6e3a1", + pink: "#f5c2e7" +} + +type Colors = keyof typeof colors + const AllLogs = { info: { m: "INFO", c: null }, error: { m: "ERROR", c: "#ff6666" }, warn: { m: "WARN", c: "#ffcc99" }, - debug: { m: "DEBUG", c: "#66ff66" } + debug: { m: "DEBUG", c: "#66ff66" }, + custom: { m: "CUSTOM", c: null } } as const type LogType = keyof typeof AllLogs -export function log(m: string, t: LogType = "info"): void { +type CustomColorProps = { + type: "preset" + color: Colors +} | { + type: "custom" + color: string +} + +export function log(m: string, t: LogType = "info", c?: CustomColorProps): void { const date = new Date() const time = logTimeFormatter(date) const logType = AllLogs[t].m const logColor = AllLogs[t].c const message = `[${logType}] ${time} | ${m}` - console.log(logColor ? c(message, logColor) : message) + if (t === "info") { + console.log(message) + return + } + + if (t === "custom") { + if (!c) { + console.error("Custom log type requires a color.") + return + } + + if (c.type === "preset") { + const color = colors[c.color] + console.log(cc(message, color)) + } else { + console.log(cc(message, c.color)) + } + return + } + + console.log(cc(message, logColor!)) +} + +function cc(text: string, color: string) { + return chalk.hex(color)(text) } From d938dd9d3ee6f7e92eac2843ecf75d85f6035852 Mon Sep 17 00:00:00 2001 From: Taken Date: Thu, 14 Nov 2024 18:44:07 +0100 Subject: [PATCH 4/5] Added new logger --- scripts/delete-commands.ts | 5 +- scripts/deploy-commands.ts | 8 ++-- scripts/dev-deploy.ts | 5 +- scripts/update-bot.ts | 3 +- src/commands/staff/updateall.ts | 14 +++--- src/components/autocomplete/unban.ts | 3 +- .../buttons/guildapplicationaccept.ts | 7 +-- src/events/cron/weeklyGexp.ts | 4 +- src/events/server/interactions/logBtnsCmds.ts | 35 +++++++------- src/events/server/ready/consolelog.ts | 4 +- src/utils/Autodeploy.ts | 28 ++++++----- src/utils/Client.ts | 8 ++-- src/utils/Functions/colors.ts | 48 ------------------- src/utils/Functions/logtochannel.ts | 3 +- src/utils/Illegitimate.ts | 4 +- src/utils/Logger.ts | 31 +++++------- 16 files changed, 81 insertions(+), 129 deletions(-) delete mode 100644 src/utils/Functions/colors.ts diff --git a/scripts/delete-commands.ts b/scripts/delete-commands.ts index 779436a..385cce6 100644 --- a/scripts/delete-commands.ts +++ b/scripts/delete-commands.ts @@ -1,15 +1,16 @@ import { REST, Routes } from "discord.js" import env from "../src/utils/Env" +import { log } from "../src/utils/Logger.js" const rest = new REST({ version: "10" }).setToken(env.dev.devtoken) try { - console.log("Started deleting application (/) commands.") + log("Started deleting application (/) commands.") await rest.put( Routes.applicationGuildCommands(env.dev.devid, env.dev.guildid), { body: [] } ) - console.log("Successfully deleted application (/) commands.") + log("Successfully deleted application (/) commands.") } catch (error) { console.error(error) } diff --git a/scripts/deploy-commands.ts b/scripts/deploy-commands.ts index 69d677d..857c854 100644 --- a/scripts/deploy-commands.ts +++ b/scripts/deploy-commands.ts @@ -2,7 +2,7 @@ import { REST, RESTPutAPIApplicationCommandsJSONBody, Routes } from "discord.js" import fs from "node:fs" import { ICommand } from "../src/interfaces" import env from "../src/utils/Env" -import { color } from "../src/utils/Functions/colors" +import { log } from "../src/utils/Logger.js" const rest = new REST({ version: "10" }).setToken(env.prod.token) const commands: RESTPutAPIApplicationCommandsJSONBody = [] @@ -19,16 +19,16 @@ for (const file of contentMenuCommands) { } try { - console.log(color(`Started refreshing ${commands.length} application (/) commands.`, "green")) + log(`Started refreshing ${commands.length} application (/) commands.`, "info", { type: "preset", color: "green" }) const commandsString = commands.map(command => " " + command.name) - console.log(color(commandsString.join("\n"), "lavender")) + log(commandsString.join("\n"), "info", { type: "preset", color: "lavender" }) await rest.put( Routes.applicationCommands(env.dev.clientid), { body: commands } ).then(() => { - console.log(color(`Successfully reloaded ${commands.length} application (/) commands.`, "green")) + log(`Successfully reloaded ${commands.length} application (/) commands.`, "info", { type: "preset", color: "green" }) process.exit(0) }) } catch (error) { diff --git a/scripts/dev-deploy.ts b/scripts/dev-deploy.ts index ba10029..436a19d 100644 --- a/scripts/dev-deploy.ts +++ b/scripts/dev-deploy.ts @@ -2,6 +2,7 @@ import { REST, RESTPutAPIApplicationCommandsJSONBody, Routes } from "discord.js" import fs from "fs" import { ICommand } from "../src/interfaces" import env from "../src/utils/Env" +import { log } from "../src/utils/Logger.js" const rest = new REST({ version: "10" }).setToken(env.dev.devtoken) const commands: RESTPutAPIApplicationCommandsJSONBody = [] @@ -22,13 +23,13 @@ for (const file of contentMenuCommands) { } try { - console.log(`Started refreshing ${commands.length} application (/) commands.`) + log(`Started refreshing ${commands.length} application (/) commands.`) await rest.put( Routes.applicationGuildCommands(env.dev.devid, env.dev.guildid), { body: commands } ).then(() => { - console.log(`Successfully reloaded ${commands.length} application (/) commands.`) + log(`Successfully reloaded ${commands.length} application (/) commands.`) process.exit(0) }) } catch (error) { diff --git a/scripts/update-bot.ts b/scripts/update-bot.ts index d5b51d0..2ed3148 100644 --- a/scripts/update-bot.ts +++ b/scripts/update-bot.ts @@ -1,4 +1,5 @@ import axios from "axios" +import { log } from "../src/utils/Logger.js" const url = process.env.WATCHTOWERURL const token = process.env.WATCHTOWERTOKEN @@ -12,7 +13,7 @@ await axios.get(url, { Authorization: `Bearer ${token}` } }).then(() => { - console.log("Illegitimate bot updated") + log("Illegitimate bot updated") }).catch(err => { console.error("Error updating bot", err) }) diff --git a/src/commands/staff/updateall.ts b/src/commands/staff/updateall.ts index 6071c43..7e45542 100644 --- a/src/commands/staff/updateall.ts +++ b/src/commands/staff/updateall.ts @@ -3,9 +3,9 @@ import { getVerifies } from "src/drizzle/functions.js" import { embedColor, hypixelGuildID } from "~/config/options.js" import { IGuildData } from "~/interfaces" import env from "~/utils/Env.js" -import { color } from "~/utils/Functions/colors.js" import roleManage from "~/utils/Functions/rolesmanage.js" import { getGuild, getIGN } from "~/utils/Hypixel.js" +import { log } from "~/utils/Logger.js" export default async function updateAll(interaction: ChatInputCommandInteraction): Promise { await interaction.deferReply() @@ -66,12 +66,12 @@ export default async function updateAll(interaction: ChatInputCommandInteraction for (const gmember of guildMembers) { const memberData = verifiedUsers.find(user => user.userID === gmember.id) - console.log(color(`Updating ${gmember.member.user.username} [${i}/${guildMembers.length}]`, "green")) + log(`Updating ${gmember.member.user.username} [${i}/${guildMembers.length}]`, "info", { type: "preset", color: "green" }) i++ if (!memberData) { if (gmember.member.user.bot) { - console.log(color(` Skipped bot [${gmember.member.user.username}]`, "lavender")) + log(` Skipped bot [${gmember.member.user.username}]`, "info", { type: "preset", color: "lavender" }) continue } const roles = roleManage("defaultnoverify") @@ -80,7 +80,7 @@ export default async function updateAll(interaction: ChatInputCommandInteraction await gmember.member.setNickname(`${gmember.member.user.username} (X)`, "Updating all discord members").catch(() => { // Do nothing }) - console.log(color(`${gmember.member.user.username} [X]`, "lavender")) + log(`${gmember.member.user.username} [X]`, "info", { type: "preset", color: "lavender" }) } else { const uuid = memberData.uuid const ign = await getIGN(uuid) @@ -89,10 +89,10 @@ export default async function updateAll(interaction: ChatInputCommandInteraction const roles = roleManage("default") await gmember.member.roles.remove(roles.rolesToRemove, "Updating all discord members") await gmember.member.roles.add(roles.rolesToAdd, "Updating all discord members") - console.log(color(`${gmember.member.user.username} [Default]`, "lavender")) + log(`${gmember.member.user.username} [Default]`, "info", { type: "preset", color: "lavender" }) } else if (guildMemberIDs.includes(memberData!.uuid)) { const guildMemberRank = hypixelGuildMembers.find(gmember => gmember.uuid === memberData!.uuid)!.rank - console.log(color(" Updating roles for " + gmember.member.user.username, "lavender")) + log(" Updating roles for " + gmember.member.user.username, "info", { type: "preset", color: "lavender" }) if (guildMemberRank === "Guild Master") { const rolesmanage = roleManage("gm") @@ -126,7 +126,7 @@ export default async function updateAll(interaction: ChatInputCommandInteraction } } - console.log("Successfully updated all roles.") + log("Successfully updated all roles.", "info") await channel.send({ embeds: [{ diff --git a/src/components/autocomplete/unban.ts b/src/components/autocomplete/unban.ts index 75fb4e6..0af4127 100644 --- a/src/components/autocomplete/unban.ts +++ b/src/components/autocomplete/unban.ts @@ -1,4 +1,5 @@ import { IAutocomplete } from "~/interfaces" +import { log } from "~/utils/Logger.js" export default { name: "unban", @@ -25,7 +26,7 @@ export default { })) await interaction.respond(results.slice(0, 25)).catch(err => { - console.log(err) + log(err, "error") }) } } as IAutocomplete diff --git a/src/components/buttons/guildapplicationaccept.ts b/src/components/buttons/guildapplicationaccept.ts index 825e2e5..0926006 100644 --- a/src/components/buttons/guildapplicationaccept.ts +++ b/src/components/buttons/guildapplicationaccept.ts @@ -4,8 +4,8 @@ import { addWaitingList, getWaitingLists, removeWaitingList } from "src/drizzle/ import { embedColor, hypixelGuildID, waitingListChannel, waitingListMessage } from "~/config/options.js" import { waitingListRole } from "~/config/roles.js" import { IButton } from "~/interfaces" -import { color } from "~/utils/Functions/colors.js" import { getGuild, getIGN } from "~/utils/Hypixel.js" +import { log } from "~/utils/Logger.js" export default { name: "guildapplicationaccept", @@ -127,8 +127,9 @@ export default { }) // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (err) { - console.log( - color("Error while trying to update waiting list.", "red") + log( + "Error while trying to update waiting list.", + "error" ) } } diff --git a/src/events/cron/weeklyGexp.ts b/src/events/cron/weeklyGexp.ts index 96dab76..c6bbbb1 100644 --- a/src/events/cron/weeklyGexp.ts +++ b/src/events/cron/weeklyGexp.ts @@ -1,16 +1,16 @@ import { TextChannel } from "discord.js" import { devMessage, embedColor, guildLogChannel, hypixelGuildID } from "~/config/options.js" import { ICron, IGuildData } from "~/interfaces" -import { color } from "~/utils/Functions/colors.js" import { numberFormatter } from "~/utils/Functions/intlFormaters.js" import { getGuild, getIGN } from "~/utils/Hypixel.js" import { client } from "~/utils/Illegitimate.js" +import { log } from "~/utils/Logger.js" async function guildWeekly() { const channel = client.channels.cache.get(guildLogChannel) as TextChannel if (!channel) { - console.log(color("Guild log channel not found", "red")) + log("Guild log channel not found", "error") return } diff --git a/src/events/server/interactions/logBtnsCmds.ts b/src/events/server/interactions/logBtnsCmds.ts index e9e7ea2..8fa7d95 100644 --- a/src/events/server/interactions/logBtnsCmds.ts +++ b/src/events/server/interactions/logBtnsCmds.ts @@ -1,5 +1,5 @@ import { IEvent } from "~/interfaces" -import { color } from "~/utils/Functions/colors.js" +import { log } from "~/utils/Logger.js" export default { event: "interactionCreate", @@ -15,21 +15,19 @@ export default { } if (subcommand) { - console.log( - color( - interaction.user.username + " ran " + - interaction.commandName + " " + - subcommand, - "pink" - ) + log( + interaction.user.username + " ran " + + interaction.commandName + " " + + subcommand, + "info", + { type: "preset", color: "pink" } ) } else { - console.log( - color( - interaction.user.username + " ran " + - interaction.commandName, - "pink" - ) + log( + interaction.user.username + " ran " + + interaction.commandName, + "info", + { type: "preset", color: "pink" } ) } } @@ -43,11 +41,10 @@ export default { btnId = btnId.split("-")[0] } - console.log( - color( - interaction.user.username + " clicked " + btnId, - "pink" - ) + log( + interaction.user.username + " clicked " + btnId, + "info", + { type: "preset", color: "pink" } ) return } diff --git a/src/events/server/ready/consolelog.ts b/src/events/server/ready/consolelog.ts index 0210117..d6d1429 100644 --- a/src/events/server/ready/consolelog.ts +++ b/src/events/server/ready/consolelog.ts @@ -1,9 +1,9 @@ import { IEvent } from "~/interfaces" -import { color } from "~/utils/Functions/colors.js" +import { log } from "~/utils/Logger.js" export default { event: "ready", execute(client) { - console.log(color("Logged in as " + client.user!.tag + "!", "green")) + log("Logged in as " + client.user!.tag + "!", "info", { type: "preset", color: "green" }) } } as IEvent<"ready"> diff --git a/src/utils/Autodeploy.ts b/src/utils/Autodeploy.ts index 5848800..f38498e 100644 --- a/src/utils/Autodeploy.ts +++ b/src/utils/Autodeploy.ts @@ -3,7 +3,7 @@ import fs from "fs" import { ICommand, IContextMenu } from "~/interfaces" import { ExtendedClient } from "./Client.js" import env from "./Env.js" -import { color } from "./Functions/colors.js" +import { log } from "./Logger.js" type FileType = "js" | "ts" export default async function autoDeployCommands(fileType: FileType, client: ExtendedClient) { @@ -69,34 +69,37 @@ export default async function autoDeployCommands(fileType: FileType, client: Ext const nc = commands.map(cmd => { return " " + cmd.name - }).join("\n") + }) + // }).join("\n") if (JSON.stringify(commandData) === JSON.stringify(currentCommandsData)) { - console.log(color("Commands are up to date.", "green")) - console.log(color(nc, "lavender")) + log("Commands are up to date.", "info", { type: "preset", color: "green" }) + // log(nc, "info", { type: "preset", color: "lavender" }) + nc.forEach(c => log(c, "info", { type: "preset", color: "lavender" })) } else { - console.log(color("Commands are not up to date.", "red")) + log("Commands are not up to date.", "info", { type: "preset", color: "red" }) if (currentCommands.size === 0) { for (const cmd of commands) { await guildclient.commands.create(cmd) } - console.log(color(nc, "lavender")) - console.log(color("All commands were registered.", "green")) + // log(nc, "info", { type: "preset", color: "lavender" }) + nc.forEach(c => log(c, "info", { type: "preset", color: "lavender" })) + log("All commands were registered.", "info", { type: "preset", color: "green" }) return } for (const cmd of currentCommandsData) { if (!commandData.find(c => c.name === cmd.name)) { await guildclient.commands.delete(currentCommands.find(c => c.name === cmd.name)!.id) - console.log(color(" " + cmd.name + " was unregistered.", "red")) + log(" " + cmd.name + " was unregistered.", "info", { type: "preset", color: "red" }) } } for (const cmd of commandData) { if (!currentCommandsData.find(c => c.name === cmd.name)) { await guildclient.commands.create(commands.find(c => c.name === cmd.name)!) - console.log(color(" " + cmd.name + " was registered.", "lavender")) + log(" " + cmd.name + " was registered.", "info", { type: "preset", color: "lavender" }) } } @@ -108,12 +111,13 @@ export default async function autoDeployCommands(fileType: FileType, client: Ext if (JSON.stringify(cmd) !== JSON.stringify(currentCommandData)) { await guildclient.commands.edit(currentCommand.id, cmd) - console.log(color(" " + cmd.name + " was updated.", "lavender")) + log(" " + cmd.name + " was updated.", "info", { type: "preset", color: "lavender" }) } } - console.log(color("-------------", "lavender")) - console.log(color(nc, "lavender")) + log("-------------", "info", { type: "preset", color: "lavender" }) + // log(nc, "info", { type: "preset", color: "lavender" }) + nc.forEach(c => log(c, "info", { type: "preset", color: "lavender" })) } }) } diff --git a/src/utils/Client.ts b/src/utils/Client.ts index 52842c8..6766531 100644 --- a/src/utils/Client.ts +++ b/src/utils/Client.ts @@ -2,7 +2,7 @@ import { Client, Collection, GatewayIntentBits, Partials } from "discord.js" import { IAutocomplete, IButton, ICommand, IContextMenu, IModal } from "~/interfaces" import autoDeployCommands from "./Autodeploy.js" import env from "./Env.js" -import { color } from "./Functions/colors.js" +import { log } from "./Logger.js" export class ExtendedClient extends Client { commands: Collection = new Collection() @@ -33,15 +33,15 @@ export class ExtendedClient extends Client { async start() { let token: string if (process.env.NODE_ENV === "dev" && process.env.TYPESCRIPT === "true") { - console.log(color("Running in development mode. [tsx]", "lavender")) + log("Running in development mode. [tsx]", "info", { type: "preset", color: "lavender" }) token = env.dev.devtoken autoDeployCommands("ts", this) } else if (process.env.NODE_ENV === "dev" && !process.env.TYPESCRIPT) { - console.log(color("Running in development mode.", "lavender")) + log("Running in development mode.", "info", { type: "preset", color: "lavender" }) token = env.dev.devtoken autoDeployCommands("js", this) } else { - console.log(color("Running in production mode.", "green")) + log("Running in production mode.", "info", { type: "preset", color: "green" }) token = env.prod.token } diff --git a/src/utils/Functions/colors.ts b/src/utils/Functions/colors.ts deleted file mode 100644 index 6889811..0000000 --- a/src/utils/Functions/colors.ts +++ /dev/null @@ -1,48 +0,0 @@ -import chalk from "chalk" - -const colors = { - red: "#f38ba8", - lavender: "#b4befe", - green: "#a6e3a1", - pink: "#f5c2e7" -} - -export function color(text: string, type: keyof typeof colors) { - return chalk.hex(colors[type])(text) -} - -export function colorCustom(text: string, color: string) { - return chalk.hex(color)(text) -} - -/* const colors = { - reset: "\x1b[0m", - bright: "\x1b[1m", - dim: "\x1b[2m", - underscore: "\x1b[4m", - blink: "\x1b[5m", - reverse: "\x1b[7m", - hidden: "\x1b[8m", - - black: "\x1b[30m", - red: "\x1b[31m", - green: "\x1b[32m", - yellow: "\x1b[33m", - blue: "\x1b[34m", - magenta: "\x1b[35m", - cyan: "\x1b[36m", - white: "\x1b[37m", - - bgBlack: "\x1b[40m", - bgRed: "\x1b[41m", - bgGreen: "\x1b[42m", - bgYellow: "\x1b[43m", - bgBlue: "\x1b[44m", - bgMagenta: "\x1b[45m", - bgCyan: "\x1b[46m", - bgWhite: "\x1b[47m", -} - -export default function colorize(text: string, color: keyof typeof colors) { - return colors[color] + text + colors.reset -} */ diff --git a/src/utils/Functions/logtochannel.ts b/src/utils/Functions/logtochannel.ts index a8f4b4a..a46fe76 100644 --- a/src/utils/Functions/logtochannel.ts +++ b/src/utils/Functions/logtochannel.ts @@ -1,6 +1,7 @@ import { Guild, MessageCreateOptions, TextChannel } from "discord.js" import { botLogChannel, devLogChannel, errorLogChannel, guildid, guildLogChannel, moderationLogChannel, onlineLogChannel } from "~/config/options.js" import { client } from "~/utils/Illegitimate.js" +import { log } from "../Logger.js" const channels = { online: onlineLogChannel, @@ -24,7 +25,7 @@ export default async function logToChannel(channel: Channel, message: MessageCre } if (!logChannel) { - console.log(`[ERROR] Could not find channel used for ${channel} logging.`) + log(`[ERROR] Could not find channel used for ${channel} logging.`, "error") return } diff --git a/src/utils/Illegitimate.ts b/src/utils/Illegitimate.ts index 4861d16..8b32f6b 100644 --- a/src/utils/Illegitimate.ts +++ b/src/utils/Illegitimate.ts @@ -3,9 +3,9 @@ import { YoutubeiExtractor } from "discord-player-youtubei" import { Redis } from "ioredis" import { ExtendedClient as Client } from "~/utils/Client.js" import env from "~/utils/Env.js" -import { color } from "~/utils/Functions/colors.js" import { MissingEnvVarsError } from "./Classes.js" import loadAllEvents from "./Events/loadevents.js" +import { log } from "./Logger.js" const client = new Client() const redis = new Redis(env.prod.redisURI) @@ -32,7 +32,7 @@ class Illegitimate { private async databases() { redis.on("ready", () => { - console.log(color("Connected to Redis", "green")) + log("Connected to Redis", "info", { type: "preset", color: "green" }) }) } diff --git a/src/utils/Logger.ts b/src/utils/Logger.ts index 6dc87b2..33cf23d 100644 --- a/src/utils/Logger.ts +++ b/src/utils/Logger.ts @@ -14,8 +14,7 @@ const AllLogs = { info: { m: "INFO", c: null }, error: { m: "ERROR", c: "#ff6666" }, warn: { m: "WARN", c: "#ffcc99" }, - debug: { m: "DEBUG", c: "#66ff66" }, - custom: { m: "CUSTOM", c: null } + debug: { m: "DEBUG", c: "#66ff66" } } as const type LogType = keyof typeof AllLogs @@ -28,34 +27,28 @@ type CustomColorProps = { color: string } -export function log(m: string, t: LogType = "info", c?: CustomColorProps): void { +export function log(m: string, t: LogType, c?: CustomColorProps): void { const date = new Date() const time = logTimeFormatter(date) const logType = AllLogs[t].m const logColor = AllLogs[t].c const message = `[${logType}] ${time} | ${m}` - if (t === "info") { - console.log(message) - return - } - - if (t === "custom") { - if (!c) { - console.error("Custom log type requires a color.") + if (!c) { + if (t === "info") { + console.log(message) return } - - if (c.type === "preset") { - const color = colors[c.color] - console.log(cc(message, color)) - } else { - console.log(cc(message, c.color)) - } + console.log(cc(message, logColor!)) return } - console.log(cc(message, logColor!)) + if (c.type === "preset") { + const color = colors[c.color] + console.log(cc(message, color)) + } else { + console.log(cc(message, c.color)) + } } function cc(text: string, color: string) { From 6869715e668f0c83456682213f9062e5be2f9129 Mon Sep 17 00:00:00 2001 From: Taken Date: Thu, 14 Nov 2024 18:51:02 +0100 Subject: [PATCH 5/5] Added logger to scripts --- scripts/delete-commands.ts | 4 ++-- scripts/dev-deploy.ts | 4 ++-- scripts/update-bot.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/delete-commands.ts b/scripts/delete-commands.ts index 385cce6..702c513 100644 --- a/scripts/delete-commands.ts +++ b/scripts/delete-commands.ts @@ -5,12 +5,12 @@ import { log } from "../src/utils/Logger.js" const rest = new REST({ version: "10" }).setToken(env.dev.devtoken) try { - log("Started deleting application (/) commands.") + log("Started deleting application (/) commands.", "info") await rest.put( Routes.applicationGuildCommands(env.dev.devid, env.dev.guildid), { body: [] } ) - log("Successfully deleted application (/) commands.") + log("Successfully deleted application (/) commands.", "info") } catch (error) { console.error(error) } diff --git a/scripts/dev-deploy.ts b/scripts/dev-deploy.ts index 436a19d..18e8c8a 100644 --- a/scripts/dev-deploy.ts +++ b/scripts/dev-deploy.ts @@ -23,13 +23,13 @@ for (const file of contentMenuCommands) { } try { - log(`Started refreshing ${commands.length} application (/) commands.`) + log(`Started refreshing ${commands.length} application (/) commands.`, "info") await rest.put( Routes.applicationGuildCommands(env.dev.devid, env.dev.guildid), { body: commands } ).then(() => { - log(`Successfully reloaded ${commands.length} application (/) commands.`) + log(`Successfully reloaded ${commands.length} application (/) commands.`, "info") process.exit(0) }) } catch (error) { diff --git a/scripts/update-bot.ts b/scripts/update-bot.ts index 2ed3148..c1394e2 100644 --- a/scripts/update-bot.ts +++ b/scripts/update-bot.ts @@ -13,7 +13,7 @@ await axios.get(url, { Authorization: `Bearer ${token}` } }).then(() => { - log("Illegitimate bot updated") + log("Illegitimate bot updated", "info") }).catch(err => { console.error("Error updating bot", err) })