diff --git a/.swcrc b/.swcrc index ef5b199..71761d4 100644 --- a/.swcrc +++ b/.swcrc @@ -22,7 +22,7 @@ } }, "module": { - "type": "commonjs", + "type": "es6", "strict": true, "strictMode": true, "noInterop": false, diff --git a/package.json b/package.json index b3d6105..c27fb85 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "version": "1.0.0", "description": "", "main": "src/index.ts", + "type": "module", "repository": { "type": "git", "url": "https://gitlab.com/illegitimate/illegitimate-bot" diff --git a/src/commands-contextmenu/congratsmessage.ts b/src/commands-contextmenu/congratsmessage.ts index 1a3e06a..31ce36e 100644 --- a/src/commands-contextmenu/congratsmessage.ts +++ b/src/commands-contextmenu/congratsmessage.ts @@ -1,7 +1,7 @@ import { ContextMenuCommandBuilder, ApplicationCommandType, PermissionFlagsBits, userMention } from "discord.js" import { IContextMenu } from "interfaces" -export = { +export default { name: "congratsmessage", description: "Congratulate a user.", dev: false, diff --git a/src/commands-contextmenu/resetnick.ts b/src/commands-contextmenu/resetnick.ts index d4a9666..87adc46 100644 --- a/src/commands-contextmenu/resetnick.ts +++ b/src/commands-contextmenu/resetnick.ts @@ -1,7 +1,7 @@ import { ContextMenuCommandBuilder, ApplicationCommandType, PermissionFlagsBits } from "discord.js" import { IContextMenu } from "interfaces" -export = { +export default { name: "resetnick", description: "Reset your nickname.", dev: false, diff --git a/src/commands-contextmenu/updateuser.ts b/src/commands-contextmenu/updateuser.ts index 1338d65..7da16f0 100644 --- a/src/commands-contextmenu/updateuser.ts +++ b/src/commands-contextmenu/updateuser.ts @@ -1,12 +1,12 @@ import { ApplicationCommandType, ContextMenuCommandBuilder, PermissionFlagsBits, userMention } from "discord.js" -import { embedColor, devMessage, hypixelGuildID } from "config/options" +import { embedColor, devMessage, hypixelGuildID } from "config/options.js" import { IContextMenu } from "interfaces" -import verify from "schemas/verifyTag" -import { getGuild, getHeadURL, getIGN } from "utils/Hypixel" -import roleManage from "utils/functions/rolesmanage" -import { waitingListRole } from "config/roles" +import verify from "schemas/verifyTag.js" +import { getGuild, getHeadURL, getIGN } from "utils/Hypixel.js" +import roleManage from "utils/functions/rolesmanage.js" +import { waitingListRole } from "config/roles.js" -export = { +export default { name: "Update User", description: "Updates a user's roles", dev: false, diff --git a/src/commands/anime.ts b/src/commands/anime.ts index 0bea798..b1ee2eb 100644 --- a/src/commands/anime.ts +++ b/src/commands/anime.ts @@ -1,10 +1,10 @@ import { SlashCommandBuilder } from "discord.js" import { ICommand } from "interfaces" -import { devMessage, embedColor } from "config/options" +import { devMessage, embedColor } from "config/options.js" import { anilist } from "anilist" -import { capitalizeFirstLetter, removeIndents } from "utils/functions/funcs" +import { capitalizeFirstLetter, removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "anime", description: "Anime subcommands", public: true, diff --git a/src/commands/ban.ts b/src/commands/ban.ts index b7e01e1..416c528 100644 --- a/src/commands/ban.ts +++ b/src/commands/ban.ts @@ -1,11 +1,11 @@ import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember, } from "discord.js" -import { admin, helper } from "config/roles" -import { embedColor, devMessage } from "config/options" +import { admin, helper } from "config/roles.js" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -import logToChannel from "utils/functions/logtochannel" -import { removeIndents } from "utils/functions/funcs" +import logToChannel from "utils/functions/logtochannel.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "ban", description: "Ban a user", dev: false, diff --git a/src/commands/botinfo.ts b/src/commands/botinfo.ts index 2d5966a..adcc9f6 100644 --- a/src/commands/botinfo.ts +++ b/src/commands/botinfo.ts @@ -1,12 +1,16 @@ import { SlashCommandBuilder } from "discord.js" import { ICommand } from "interfaces" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import os from "os" +import prettyMs from "pretty-ms" import { execSync } from "child_process" -import { removeIndents } from "utils/functions/funcs" +import { removeIndents } from "utils/functions/funcs.js" +import { createRequire } from "node:module" + +const require = createRequire(import.meta.url) const { dependencies, devDependencies } = require("../../package.json") -export = { +export default { name: "botinfo", description: "Get information about the bot", dev: false, @@ -18,7 +22,6 @@ export = { .setDMPermission(false), async execute({ interaction, client }) { - const { default: prettyMs } = await import("pretty-ms") const castedDeps = dependencies as { [key: string]: string } const castedDevDeps = devDependencies as { [key: string]: string } let osInfo: string diff --git a/src/commands/check.ts b/src/commands/check.ts index 552e00f..f031ed7 100644 --- a/src/commands/check.ts +++ b/src/commands/check.ts @@ -1,10 +1,10 @@ import { SlashCommandBuilder } from "discord.js" -import { bwfkdr, bwstars, bwwins, swstars, swkdr, duelswins, duelswlr } from "config/reqs" -import { embedColor, devMessage } from "config/options" -import { hypixelLevel, bedwarsLevel, skywarsLevel, getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel" +import { bwfkdr, bwstars, bwwins, swstars, swkdr, duelswins, duelswlr } from "config/reqs.js" +import { embedColor, devMessage } from "config/options.js" +import { hypixelLevel, bedwarsLevel, skywarsLevel, getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js" import { ICommand } from "interfaces" -export = { +export default { name: "check", description: "Check a player's stats.", dev: false, diff --git a/src/commands/clear.ts b/src/commands/clear.ts index 6370939..a69d313 100644 --- a/src/commands/clear.ts +++ b/src/commands/clear.ts @@ -1,10 +1,10 @@ import { SlashCommandBuilder, PermissionFlagsBits, TextChannel, channelMention, userMention } from "discord.js" -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { ICommand } from "interfaces" -import logToChannel from "utils/functions/logtochannel" -import { removeIndents } from "utils/functions/funcs" +import logToChannel from "utils/functions/logtochannel.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "clear", description: "Clears messages", dev: false, diff --git a/src/commands/config.ts b/src/commands/config.ts index 558bd49..9d920f1 100644 --- a/src/commands/config.ts +++ b/src/commands/config.ts @@ -1,9 +1,9 @@ import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js" -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { ICommand } from "interfaces" -import settings from "schemas/settingsTag" +import settings from "schemas/settingsTag.js" -export = { +export default { name: "config", description: "Configure the bot", dev: false, diff --git a/src/commands/counting.ts b/src/commands/counting.ts index ebb99dc..489f74f 100644 --- a/src/commands/counting.ts +++ b/src/commands/counting.ts @@ -1,10 +1,10 @@ import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -import ban from "./counting/ban" -import unban from "./counting/unban" +import ban from "./counting/ban.js" +import unban from "./counting/unban.js" -export = { +export default { name: "counting", description: "counting subcommands", dev: false, diff --git a/src/commands/counting/ban.ts b/src/commands/counting/ban.ts index f560420..a2ee9c8 100644 --- a/src/commands/counting/ban.ts +++ b/src/commands/counting/ban.ts @@ -1,6 +1,6 @@ import { ChatInputCommandInteraction, GuildMember, userMention } from "discord.js" -import { countingBanned } from "config/roles" -import { embedColor, devMessage } from "config/options" +import { countingBanned } from "config/roles.js" +import { embedColor, devMessage } from "config/options.js" export default async function ban(interaction: ChatInputCommandInteraction): Promise { const member = interaction.options.getMember("user")! as GuildMember diff --git a/src/commands/counting/unban.ts b/src/commands/counting/unban.ts index bba13fd..9e89da4 100644 --- a/src/commands/counting/unban.ts +++ b/src/commands/counting/unban.ts @@ -1,6 +1,6 @@ import { ChatInputCommandInteraction, GuildMember, userMention } from "discord.js" -import { countingBanned } from "config/roles" -import { embedColor, devMessage } from "config/options" +import { countingBanned } from "config/roles.js" +import { embedColor, devMessage } from "config/options.js" export default async function ban(interaction: ChatInputCommandInteraction): Promise { const member = interaction.options.getMember("user")! as GuildMember diff --git a/src/commands/find.ts b/src/commands/find.ts index cff7c55..ef5320f 100644 --- a/src/commands/find.ts +++ b/src/commands/find.ts @@ -1,10 +1,10 @@ -import { devMessage, embedColor } from "config/options" +import { devMessage, embedColor } from "config/options.js" import { PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import { ICommand } from "interfaces" -import verify from "schemas/verifyTag" -import { getHeadURL, getIGN, getUUID } from "utils/Hypixel" +import verify from "schemas/verifyTag.js" +import { getHeadURL, getIGN, getUUID } from "utils/Hypixel.js" -export = { +export default { name: "find", description: "Find a person by the ign", dev: false, diff --git a/src/commands/forceunverify.ts b/src/commands/forceunverify.ts index cc682ac..95b1aad 100644 --- a/src/commands/forceunverify.ts +++ b/src/commands/forceunverify.ts @@ -1,13 +1,13 @@ import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" -import { embedColor, devMessage } from "config/options" -import verify from "schemas/verifyTag" +import { embedColor, devMessage } from "config/options.js" +import verify from "schemas/verifyTag.js" import { ICommand } from "interfaces" -import roleManage from "utils/functions/rolesmanage" -import logToChannel from "utils/functions/logtochannel" -import { getIGN } from "utils/Hypixel" -import { removeIndents } from "utils/functions/funcs" +import roleManage from "utils/functions/rolesmanage.js" +import logToChannel from "utils/functions/logtochannel.js" +import { getIGN } from "utils/Hypixel.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "forceunverify", description: "Force unverify a user", dev: false, diff --git a/src/commands/forceupdate.ts b/src/commands/forceupdate.ts index 135ca17..948d844 100644 --- a/src/commands/forceupdate.ts +++ b/src/commands/forceupdate.ts @@ -1,13 +1,13 @@ import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" -import { getGuild, getHeadURL, getIGN } from "utils/Hypixel" -import { hypixelGuildID, embedColor, devMessage } from "config/options" -import verify from "schemas/verifyTag" +import { getGuild, getHeadURL, getIGN } from "utils/Hypixel.js" +import { hypixelGuildID, embedColor, devMessage } from "config/options.js" +import verify from "schemas/verifyTag.js" import { ICommand } from "interfaces" -import roleManage from "utils/functions/rolesmanage" -import { waitingListRole } from "config/roles" -import { removeIndents } from "utils/functions/funcs" +import roleManage from "utils/functions/rolesmanage.js" +import { waitingListRole } from "config/roles.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "forceupdate", description: "Force update the user", dev: false, diff --git a/src/commands/forceverify.ts b/src/commands/forceverify.ts index b4cd9e8..6e0dbde 100644 --- a/src/commands/forceverify.ts +++ b/src/commands/forceverify.ts @@ -1,13 +1,13 @@ import { SlashCommandBuilder, PermissionFlagsBits, GuildMember, userMention } from "discord.js" -import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel" -import { embedColor, hypixelGuildID, devMessage } from "config/options" -import verify from "schemas/verifyTag" -import roleManage from "utils/functions/rolesmanage" +import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js" +import { embedColor, hypixelGuildID, devMessage } from "config/options.js" +import verify from "schemas/verifyTag.js" +import roleManage from "utils/functions/rolesmanage.js" import { ICommand } from "interfaces" -import logToChannel from "utils/functions/logtochannel" -import { removeIndents } from "utils/functions/funcs" +import logToChannel from "utils/functions/logtochannel.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "forceverify", description: "Force verify a user.", dev: false, diff --git a/src/commands/guild.ts b/src/commands/guild.ts index ecdfcb9..f14db05 100644 --- a/src/commands/guild.ts +++ b/src/commands/guild.ts @@ -1,11 +1,11 @@ import { SlashCommandBuilder } from "discord.js" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -import guildMember from "./guild/member" -import guildInfo from "./guild/info" -import guildTop from "./guild/top" +import guildMember from "./guild/member.js" +import guildInfo from "./guild/info.js" +import guildTop from "./guild/top.js" -export = { +export default { name: "guild", description: "Subcommands for guilds", dev: false, diff --git a/src/commands/guild/info.ts b/src/commands/guild/info.ts index a039ce4..866135e 100644 --- a/src/commands/guild/info.ts +++ b/src/commands/guild/info.ts @@ -1,5 +1,5 @@ -import { getUUID, getIGN, getPlayer, getGuild, guildLevel } from "utils/Hypixel" -import { embedColor, devMessage } from "config/options" +import { getUUID, getIGN, getPlayer, getGuild, guildLevel } from "utils/Hypixel.js" +import { embedColor, devMessage } from "config/options.js" import { ChatInputCommandInteraction } from "discord.js" import { IGuildData } from "interfaces" diff --git a/src/commands/guild/member.ts b/src/commands/guild/member.ts index 10ae56c..ded500d 100644 --- a/src/commands/guild/member.ts +++ b/src/commands/guild/member.ts @@ -1,5 +1,5 @@ -import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel" -import { embedColor, devMessage } from "config/options" +import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js" +import { embedColor, devMessage } from "config/options.js" import { ChatInputCommandInteraction } from "discord.js" export default async function guildMember(interaction: ChatInputCommandInteraction): Promise { diff --git a/src/commands/guild/top.ts b/src/commands/guild/top.ts index d672dab..3a2834b 100644 --- a/src/commands/guild/top.ts +++ b/src/commands/guild/top.ts @@ -1,8 +1,8 @@ -import { getUUID, getPlayer, getGuild, getIGN } from "utils/Hypixel" -import { embedColor, devMessage } from "config/options" +import { getUUID, getPlayer, getGuild, getIGN } from "utils/Hypixel.js" +import { embedColor, devMessage } from "config/options.js" import { ChannelType, ChatInputCommandInteraction } from "discord.js" import { IGuildData } from "interfaces" -import { redis } from "utils/Illegitimate" +import { redis } from "utils/Illegitimate.js" export default async function guildTop(interaction: ChatInputCommandInteraction): Promise { await interaction.deferReply() diff --git a/src/commands/help.ts b/src/commands/help.ts index e64558e..6d7b000 100644 --- a/src/commands/help.ts +++ b/src/commands/help.ts @@ -1,8 +1,8 @@ import { SlashCommandBuilder } from "discord.js" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -export = { +export default { name: "help", description: "Help command", dev: false, diff --git a/src/commands/instructions.ts b/src/commands/instructions.ts index a847bf9..63e7f34 100644 --- a/src/commands/instructions.ts +++ b/src/commands/instructions.ts @@ -1,9 +1,9 @@ import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js" -import { embedColor, devMessage, instructionsgif } from "config/options" +import { embedColor, devMessage, instructionsgif } from "config/options.js" import { ICommand } from "interfaces" -import { removeIndents } from "utils/functions/funcs" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "instructions", description: "Instructions for verification", dev: false, diff --git a/src/commands/kick.ts b/src/commands/kick.ts index 8345f02..68d8f45 100644 --- a/src/commands/kick.ts +++ b/src/commands/kick.ts @@ -1,11 +1,11 @@ import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" -import { admin, helper } from "config/roles" -import { embedColor, devMessage } from "config/options" +import { admin, helper } from "config/roles.js" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -import logToChannel from "utils/functions/logtochannel" -import { removeIndents } from "utils/functions/funcs" +import logToChannel from "utils/functions/logtochannel.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "kick", description: "Kick a member from the server.", dev: false, diff --git a/src/commands/music.ts b/src/commands/music.ts index cdf0bd2..d184044 100644 --- a/src/commands/music.ts +++ b/src/commands/music.ts @@ -1,15 +1,15 @@ import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js" import { ICommand } from "interfaces" -import play from "./music/play" -import leave from "./music/leave" -import queue from "./music/queue" -import volume from "./music/volume" -import skip from "./music/skip" -import nowplaying from "./music/nowplaying" -import pause from "./music/pause" -import unpause from "./music/unpause" +import play from "./music/play.js" +import leave from "./music/leave.js" +import queue from "./music/queue.js" +import volume from "./music/volume.js" +import skip from "./music/skip.js" +import nowplaying from "./music/nowplaying.js" +import pause from "./music/pause.js" +import unpause from "./music/unpause.js" -export = { +export default { name: "music", description: "Subcommands for music commands", dev: true, diff --git a/src/commands/music/leave.ts b/src/commands/music/leave.ts index c223de2..263240d 100644 --- a/src/commands/music/leave.ts +++ b/src/commands/music/leave.ts @@ -1,4 +1,4 @@ -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { useMainPlayer } from "discord-player" import { ChatInputCommandInteraction } from "discord.js" diff --git a/src/commands/music/nowplaying.ts b/src/commands/music/nowplaying.ts index e0fe8d4..d8ae45d 100644 --- a/src/commands/music/nowplaying.ts +++ b/src/commands/music/nowplaying.ts @@ -1,7 +1,7 @@ -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { useMainPlayer } from "discord-player" import { ChatInputCommandInteraction } from "discord.js" -import { removeIndents } from "utils/functions/funcs" +import { removeIndents } from "utils/functions/funcs.js" export default async function nowplaying(interaction: ChatInputCommandInteraction) { await interaction.deferReply() diff --git a/src/commands/music/pause.ts b/src/commands/music/pause.ts index dc8c201..f3eccf0 100644 --- a/src/commands/music/pause.ts +++ b/src/commands/music/pause.ts @@ -1,4 +1,4 @@ -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { useMainPlayer } from "discord-player" import { ChatInputCommandInteraction } from "discord.js" diff --git a/src/commands/music/play.ts b/src/commands/music/play.ts index c913eb5..0601a61 100644 --- a/src/commands/music/play.ts +++ b/src/commands/music/play.ts @@ -1,4 +1,4 @@ -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { useMainPlayer } from "discord-player" import { ChatInputCommandInteraction, GuildMember } from "discord.js" diff --git a/src/commands/music/queue.ts b/src/commands/music/queue.ts index ea1e96b..45ca51d 100644 --- a/src/commands/music/queue.ts +++ b/src/commands/music/queue.ts @@ -1,4 +1,4 @@ -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { useMainPlayer } from "discord-player" import { ChatInputCommandInteraction } from "discord.js" diff --git a/src/commands/music/skip.ts b/src/commands/music/skip.ts index 952225b..f20db58 100644 --- a/src/commands/music/skip.ts +++ b/src/commands/music/skip.ts @@ -1,4 +1,4 @@ -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { useMainPlayer } from "discord-player" import { ChatInputCommandInteraction } from "discord.js" diff --git a/src/commands/music/unpause.ts b/src/commands/music/unpause.ts index bf83909..9143866 100644 --- a/src/commands/music/unpause.ts +++ b/src/commands/music/unpause.ts @@ -1,4 +1,4 @@ -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { useMainPlayer } from "discord-player" import { ChatInputCommandInteraction } from "discord.js" diff --git a/src/commands/music/volume.ts b/src/commands/music/volume.ts index 2e32c74..dbea150 100644 --- a/src/commands/music/volume.ts +++ b/src/commands/music/volume.ts @@ -1,4 +1,4 @@ -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { useMainPlayer } from "discord-player" import { ChatInputCommandInteraction } from "discord.js" diff --git a/src/commands/ping.ts b/src/commands/ping.ts index 1d6b751..2ba6193 100644 --- a/src/commands/ping.ts +++ b/src/commands/ping.ts @@ -1,8 +1,8 @@ import { SlashCommandBuilder } from "discord.js" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -export = { +export default { name: "ping", description: "Get the bot's ping.", dev: false, diff --git a/src/commands/pp.ts b/src/commands/pp.ts index e4b0d2b..9a5664c 100644 --- a/src/commands/pp.ts +++ b/src/commands/pp.ts @@ -1,9 +1,9 @@ import { SlashCommandBuilder, User } from "discord.js" -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { ICommand } from "interfaces" -import env from "utils/Env" +import env from "utils/Env.js" -export = { +export default { name: "pp", description: "Shows pp size", public: true, diff --git a/src/commands/remove.ts b/src/commands/remove.ts index b6a900e..8d5df86 100644 --- a/src/commands/remove.ts +++ b/src/commands/remove.ts @@ -1,12 +1,12 @@ import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" -import { embedColor, devMessage } from "config/options" -import waitinglist from "schemas/waitinglistTag" +import { embedColor, devMessage } from "config/options.js" +import waitinglist from "schemas/waitinglistTag.js" import { ICommand } from "interfaces" -import logToChannel from "utils/functions/logtochannel" -import { waitingListRole } from "config/roles" -import { removeIndents } from "utils/functions/funcs" +import logToChannel from "utils/functions/logtochannel.js" +import { waitingListRole } from "config/roles.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "remove", description: "Remove a person on the waiting list.", dev: false, diff --git a/src/commands/reqs.ts b/src/commands/reqs.ts index 348299d..700a37e 100644 --- a/src/commands/reqs.ts +++ b/src/commands/reqs.ts @@ -1,9 +1,9 @@ import { SlashCommandBuilder } from "discord.js" -import { embedColor, devMessage } from "config/options" -import { bwfkdr, bwstars, bwwins, swstars, swkdr, duelswins, duelswlr } from "config/reqs" +import { embedColor, devMessage } from "config/options.js" +import { bwfkdr, bwstars, bwwins, swstars, swkdr, duelswins, duelswlr } from "config/reqs.js" import { ICommand } from "interfaces" -export = { +export default { name: "reqs", description: "Displays the requirements for the guild.", dev: false, diff --git a/src/commands/send.ts b/src/commands/send.ts index 0e5bd34..71d85d2 100644 --- a/src/commands/send.ts +++ b/src/commands/send.ts @@ -1,8 +1,8 @@ import { SlashCommandBuilder, PermissionFlagsBits, ChannelType, TextChannel } from "discord.js" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -export = { +export default { name: "send", description: "Send a message to a channel.", dev: false, diff --git a/src/commands/setnick.ts b/src/commands/setnick.ts index 2b8c839..3e781b0 100644 --- a/src/commands/setnick.ts +++ b/src/commands/setnick.ts @@ -1,10 +1,10 @@ import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -import logToChannel from "utils/functions/logtochannel" -import { removeIndents } from "utils/functions/funcs" +import logToChannel from "utils/functions/logtochannel.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "setnick", description: "Set your nickname", dev: false, diff --git a/src/commands/setup.ts b/src/commands/setup.ts index 692f90e..797cf01 100644 --- a/src/commands/setup.ts +++ b/src/commands/setup.ts @@ -1,8 +1,8 @@ import { SlashCommandBuilder, PermissionFlagsBits, ButtonBuilder, ActionRowBuilder, ButtonStyle, ChannelType, TextChannel } from "discord.js" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -export = { +export default { name: "setup", description: "Used for setup of the bot.", dev: true, diff --git a/src/commands/slowmode.ts b/src/commands/slowmode.ts index c1ffc5b..b767d3c 100644 --- a/src/commands/slowmode.ts +++ b/src/commands/slowmode.ts @@ -1,10 +1,10 @@ import { SlashCommandBuilder, PermissionFlagsBits, ChannelType, TextChannel, channelMention, userMention } from "discord.js" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -import logToChannel from "utils/functions/logtochannel" -import { removeIndents } from "utils/functions/funcs" +import logToChannel from "utils/functions/logtochannel.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "slowmode", description: "Set the slowmode of a channel.", dev: false, diff --git a/src/commands/staff.ts b/src/commands/staff.ts index 90a7e70..8a2f879 100644 --- a/src/commands/staff.ts +++ b/src/commands/staff.ts @@ -1,13 +1,13 @@ import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -import help from "./staff/help" -import beast from "./staff/beast" -import updateAll from "./staff/updateall" -import prune from "./staff/prune" -import removeGuildRoles from "./staff/removeguildroles" +import help from "./staff/help.js" +import beast from "./staff/beast.js" +import updateAll from "./staff/updateall.js" +import prune from "./staff/prune.js" +import removeGuildRoles from "./staff/removeguildroles.js" -export = { +export default { name: "staff", description: "Subcommands for staff", dev: false, diff --git a/src/commands/staff/beast.ts b/src/commands/staff/beast.ts index 4ad361e..5cdba89 100644 --- a/src/commands/staff/beast.ts +++ b/src/commands/staff/beast.ts @@ -1,6 +1,6 @@ -import { bwwins, beastbwfkdr, beastbwstars, beastswkdr, beastswstars, beastduelswins, duelswlr } from "config/reqs" -import { embedColor, devMessage } from "config/options" -import { hypixelLevel, bedwarsLevel, skywarsLevel, getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel" +import { bwwins, beastbwfkdr, beastbwstars, beastswkdr, beastswstars, beastduelswins, duelswlr } from "config/reqs.js" +import { embedColor, devMessage } from "config/options.js" +import { hypixelLevel, bedwarsLevel, skywarsLevel, getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js" import { ChatInputCommandInteraction } from "discord.js" export default async function beast(interaction: ChatInputCommandInteraction): Promise { diff --git a/src/commands/staff/help.ts b/src/commands/staff/help.ts index 91141e1..6088d54 100644 --- a/src/commands/staff/help.ts +++ b/src/commands/staff/help.ts @@ -1,6 +1,6 @@ import { ChatInputCommandInteraction } from "discord.js" -import { embedColor, devMessage } from "config/options" -import { ExtendedClient as Client } from "utils/Client" +import { embedColor, devMessage } from "config/options.js" +import { ExtendedClient as Client } from "utils/Client.js" export default async function help(interaction: ChatInputCommandInteraction, client: Client): Promise { await interaction.deferReply({ ephemeral: true }) diff --git a/src/commands/staff/prune.ts b/src/commands/staff/prune.ts index 894f57f..4518b58 100644 --- a/src/commands/staff/prune.ts +++ b/src/commands/staff/prune.ts @@ -1,6 +1,6 @@ import { ActionRowBuilder, ButtonBuilder, ButtonInteraction, ButtonStyle, ChatInputCommandInteraction, ComponentType } from "discord.js" -import { embedColor, devMessage } from "config/options" -import env from "utils/Env" +import { embedColor, devMessage } from "config/options.js" +import env from "utils/Env.js" export default async function prune(interaction: ChatInputCommandInteraction): Promise { await interaction.deferReply() diff --git a/src/commands/staff/removeguildroles.ts b/src/commands/staff/removeguildroles.ts index b8daa55..ad283e2 100644 --- a/src/commands/staff/removeguildroles.ts +++ b/src/commands/staff/removeguildroles.ts @@ -1,10 +1,10 @@ -import { embedColor, hypixelGuildID } from "config/options" +import { embedColor, hypixelGuildID } from "config/options.js" import { ChatInputCommandInteraction, GuildMember } from "discord.js" -import verify from "schemas/verifyTag" +import verify from "schemas/verifyTag.js" import { IGuildData } from "interfaces" -import env from "utils/Env" -import { getGuild } from "utils/Hypixel" -import roleManage from "utils/functions/rolesmanage" +import env from "utils/Env.js" +import { getGuild } from "utils/Hypixel.js" +import roleManage from "utils/functions/rolesmanage.js" export default async function removeGuildRoles(interaction: ChatInputCommandInteraction): Promise { await interaction.deferReply() diff --git a/src/commands/staff/updateall.ts b/src/commands/staff/updateall.ts index c8d7bf6..6461f20 100644 --- a/src/commands/staff/updateall.ts +++ b/src/commands/staff/updateall.ts @@ -1,10 +1,10 @@ -import verify from "schemas/verifyTag" -import { embedColor, hypixelGuildID } from "config/options" -import color from "utils/functions/colors" -import roleManage from "utils/functions/rolesmanage" +import verify from "schemas/verifyTag.js" +import { embedColor, hypixelGuildID } from "config/options.js" +import color from "utils/functions/colors.js" +import roleManage from "utils/functions/rolesmanage.js" import { ChatInputCommandInteraction, GuildMember } from "discord.js" -import env from "utils/Env" -import { getGuild, getIGN } from "utils/Hypixel" +import env from "utils/Env.js" +import { getGuild, getIGN } from "utils/Hypixel.js" import { IGuildData } from "interfaces" export default async function updateAll(interaction: ChatInputCommandInteraction): Promise { diff --git a/src/commands/timeout.ts b/src/commands/timeout.ts index 9a283c7..c9b1af5 100644 --- a/src/commands/timeout.ts +++ b/src/commands/timeout.ts @@ -1,11 +1,12 @@ import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" import ms from "ms" -import logToChannel from "utils/functions/logtochannel" -import { removeIndents } from "utils/functions/funcs" +import prettyMs from "pretty-ms" +import logToChannel from "utils/functions/logtochannel.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "timeout", description: "Times out a memeber", dev: false, @@ -42,7 +43,17 @@ export = { const reason = interaction.options.getString("reason") || "No reason provided" const mod = interaction.member! as GuildMember const time = ms(timeString) - const { default: prettyMs } = await import("pretty-ms") + + if (!time) { + await interaction.editReply({ + embeds: [{ + description: "There was an error parsing the time.", + color: embedColor + }] + }) + return + } + const prettyTime = prettyMs(time, { verbose: true }) if (time > 2419140000) { diff --git a/src/commands/unban.ts b/src/commands/unban.ts index 1a3239b..b25bb22 100644 --- a/src/commands/unban.ts +++ b/src/commands/unban.ts @@ -1,10 +1,10 @@ import { SlashCommandBuilder, PermissionFlagsBits, userMention, User } from "discord.js" -import { embedColor, devMessage } from "config/options" +import { embedColor, devMessage } from "config/options.js" import { ICommand } from "interfaces" -import logToChannel from "utils/functions/logtochannel" -import { removeIndents } from "utils/functions/funcs" +import logToChannel from "utils/functions/logtochannel.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "unban", description: "Unban a user from the server", dev: false, diff --git a/src/commands/update.ts b/src/commands/update.ts index 872ce17..82e55ce 100644 --- a/src/commands/update.ts +++ b/src/commands/update.ts @@ -1,13 +1,13 @@ import { GuildMember, SlashCommandBuilder } from "discord.js" -import { getGuild, getIGN, getHeadURL } from "utils/Hypixel" -import verify from "schemas/verifyTag" -import { embedColor, hypixelGuildID, devMessage } from "config/options" -import roleManage from "utils/functions/rolesmanage" +import { getGuild, getIGN, getHeadURL } from "utils/Hypixel.js" +import verify from "schemas/verifyTag.js" +import { embedColor, hypixelGuildID, devMessage } from "config/options.js" +import roleManage from "utils/functions/rolesmanage.js" import { ICommand } from "interfaces" -import { waitingListRole } from "config/roles" -import { removeIndents } from "utils/functions/funcs" +import { waitingListRole } from "config/roles.js" +import { removeIndents } from "utils/functions/funcs.js" -export = { +export default { name: "update", description: "Update your guild rank.", dev: false, diff --git a/src/commands/uuid.ts b/src/commands/uuid.ts index d2d65ed..9693af0 100644 --- a/src/commands/uuid.ts +++ b/src/commands/uuid.ts @@ -1,9 +1,9 @@ import { SlashCommandBuilder } from "discord.js" -import { embedColor, devMessage } from "config/options" -import { getUUID, getIGN, getHeadURL, formatUuid } from "utils/Hypixel" +import { embedColor, devMessage } from "config/options.js" +import { getUUID, getIGN, getHeadURL, formatUuid } from "utils/Hypixel.js" import { ICommand } from "interfaces" -export = { +export default { name: "uuid", description: "Get a player's UUID", dev: false, diff --git a/src/commands/verify.ts b/src/commands/verify.ts index 17a0cac..9ce6d1d 100644 --- a/src/commands/verify.ts +++ b/src/commands/verify.ts @@ -1,13 +1,13 @@ import { GuildMember, SlashCommandBuilder } from "discord.js" -import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel" -import { embedColor, hypixelGuildID, devMessage } from "config/options" -import roleManage from "utils/functions/rolesmanage" +import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js" +import { embedColor, hypixelGuildID, devMessage } from "config/options.js" +import roleManage from "utils/functions/rolesmanage.js" import { ICommand } from "interfaces" -import verify from "schemas/verifyTag" +import verify from "schemas/verifyTag.js" import { IPlayerData } from "interfaces" import { IGuildData } from "interfaces" -export = { +export default { name: "verify", description: "Verify yourself as a member of the server.", dev: false, diff --git a/src/commands/whoami.ts b/src/commands/whoami.ts index 0b04837..5becb7d 100644 --- a/src/commands/whoami.ts +++ b/src/commands/whoami.ts @@ -1,10 +1,10 @@ import { SlashCommandBuilder, userMention } from "discord.js" import { ICommand } from "interfaces" -import { embedColor, devMessage } from "config/options" -import verify from "schemas/verifyTag" -import { getIGN, getHeadURL } from "utils/Hypixel" +import { embedColor, devMessage } from "config/options.js" +import verify from "schemas/verifyTag.js" +import { getIGN, getHeadURL } from "utils/Hypixel.js" -export = { +export default { name: "whoami", description: "Get your user info", public: true, diff --git a/src/commands/whois.ts b/src/commands/whois.ts index 8c98ae2..129c69b 100644 --- a/src/commands/whois.ts +++ b/src/commands/whois.ts @@ -1,10 +1,10 @@ import { SlashCommandBuilder, PermissionFlagsBits, userMention } from "discord.js" -import { getIGN, getHeadURL } from "utils/Hypixel" -import { embedColor, devMessage } from "config/options" -import verify from "schemas/verifyTag" +import { getIGN, getHeadURL } from "utils/Hypixel.js" +import { embedColor, devMessage } from "config/options.js" +import verify from "schemas/verifyTag.js" import { ICommand } from "interfaces" -export = { +export default { name: "whois", description: "Get's the ign of a user.", dev: false, diff --git a/src/components/autocomplete/music.ts b/src/components/autocomplete/music.ts index a3a975d..d971b07 100644 --- a/src/components/autocomplete/music.ts +++ b/src/components/autocomplete/music.ts @@ -1,7 +1,7 @@ import { QueryType, useMainPlayer } from "discord-player" import { IAutocomplete } from "interfaces" -export = { +export default { name: "music", description: "Music", diff --git a/src/components/autocomplete/unban.ts b/src/components/autocomplete/unban.ts index 3cef9a8..9e11090 100644 --- a/src/components/autocomplete/unban.ts +++ b/src/components/autocomplete/unban.ts @@ -1,6 +1,6 @@ import { IAutocomplete } from "interfaces" -export = { +export default { name: "unban", description: "Unban a user from the server", diff --git a/src/components/buttons/checkstats.ts b/src/components/buttons/checkstats.ts index 2ddf852..051a6b5 100644 --- a/src/components/buttons/checkstats.ts +++ b/src/components/buttons/checkstats.ts @@ -1,10 +1,10 @@ -import { embedColor, devMessage } from "config/options" -import guildapp from "schemas/guildAppTag" -import { bwfkdr, bwstars, bwwins, swstars, swkdr, duelswins, duelswlr } from "config/reqs" -import { hypixelLevel, bedwarsLevel, skywarsLevel, getPlayer, getGuild, getHeadURL } from "utils/Hypixel" +import { embedColor, devMessage } from "config/options.js" +import guildapp from "schemas/guildAppTag.js" +import { bwfkdr, bwstars, bwwins, swstars, swkdr, duelswins, duelswlr } from "config/reqs.js" +import { hypixelLevel, bedwarsLevel, skywarsLevel, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js" import { IButton } from "interfaces" -export = { +export default { name: "checkstats", description: "Check your stats.", diff --git a/src/components/buttons/guildapplicationaccept.ts b/src/components/buttons/guildapplicationaccept.ts index dacb6b1..7741d20 100644 --- a/src/components/buttons/guildapplicationaccept.ts +++ b/src/components/buttons/guildapplicationaccept.ts @@ -1,13 +1,13 @@ import { ActionRowBuilder, ButtonStyle, ButtonBuilder, TextChannel } from "discord.js" -import { embedColor, waitingListChannel, waitingListMessage, hypixelGuildID } from "config/options" -import color from "utils/functions/colors" -import guildapp from "schemas/guildAppTag" -import waitingList from "schemas/waitinglistTag" -import { waitingListRole } from "config/roles" +import { embedColor, waitingListChannel, waitingListMessage, hypixelGuildID } from "config/options.js" +import color from "utils/functions/colors.js" +import guildapp from "schemas/guildAppTag.js" +import waitingList from "schemas/waitinglistTag.js" +import { waitingListRole } from "config/roles.js" import { IButton } from "interfaces" -import { getGuild, getIGN } from "utils/Hypixel" +import { getGuild, getIGN } from "utils/Hypixel.js" -export = { +export default { name: "guildapplicationaccept", description: "Accept a guild application.", diff --git a/src/components/buttons/guildapplicationdeny.ts b/src/components/buttons/guildapplicationdeny.ts index f887e7f..071f1d1 100644 --- a/src/components/buttons/guildapplicationdeny.ts +++ b/src/components/buttons/guildapplicationdeny.ts @@ -1,7 +1,7 @@ import { ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } from "discord.js" import { IButton } from "interfaces" -export = { +export default { name: "guildapplicationdeny", description: "Deny a guild application.", diff --git a/src/components/buttons/guildapply.ts b/src/components/buttons/guildapply.ts index 590fe86..5e269f9 100644 --- a/src/components/buttons/guildapply.ts +++ b/src/components/buttons/guildapply.ts @@ -1,13 +1,13 @@ import { ButtonBuilder, ButtonStyle, ActionRowBuilder, GuildMember, TextChannel } from "discord.js" -import { embedColor, applicationsChannel } from "config/options" -import { largeM, smallM, ignM } from "config/limitmessages" -import questions from "config/questions" -import { guildRole } from "config/roles" -import guildapp from "schemas/guildAppTag" +import { embedColor, applicationsChannel } from "config/options.js" +import { largeM, smallM, ignM } from "config/limitmessages.js" +import { guild as guildQuestions } from "config/questions.js" +import { guildRole } from "config/roles.js" +import guildapp from "schemas/guildAppTag.js" import { IButton } from "interfaces" -import applicationQuestions from "utils/functions/applicationquestions" +import applicationQuestions from "utils/functions/applicationquestions.js" -export = { +export default { name: "guildapply", description: "Guild application button.", @@ -16,7 +16,6 @@ export = { const user = interaction.member as GuildMember const guild = interaction.guild! const userRoles = user.roles.cache.map(role => role.id) - const guildQuestions = questions.guild function qu(n: number): string { return guildQuestions[n - 1].q diff --git a/src/components/buttons/guildinactivitylog.ts b/src/components/buttons/guildinactivitylog.ts index a0443b6..3f40591 100644 --- a/src/components/buttons/guildinactivitylog.ts +++ b/src/components/buttons/guildinactivitylog.ts @@ -1,13 +1,13 @@ import { ButtonBuilder, ActionRowBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js" -import { gm, manager, moderator, beast, member, guildStaff, guildRole } from "config/roles" -import { ignM, smallM, largeM } from "config/limitmessages" -import { inactivity } from "config/questions" -import { embedColor, inactivityLogChannel } from "config/options" +import { gm, manager, moderator, beast, member, guildStaff, guildRole } from "config/roles.js" +import { ignM, smallM, largeM } from "config/limitmessages.js" +import { inactivity } from "config/questions.js" +import { embedColor, inactivityLogChannel } from "config/options.js" import { IButton } from "interfaces" -import applicationQuestions from "utils/functions/applicationquestions" +import applicationQuestions from "utils/functions/applicationquestions.js" const guildRoles = [gm, manager, moderator, beast, member, guildStaff, guildRole] -export = { +export default { name: "guildinactivitylog", description: "Configure the bot.", diff --git a/src/components/buttons/inactiveapplicationaccept.ts b/src/components/buttons/inactiveapplicationaccept.ts index f93bf43..8654c0d 100644 --- a/src/components/buttons/inactiveapplicationaccept.ts +++ b/src/components/buttons/inactiveapplicationaccept.ts @@ -1,6 +1,6 @@ import { IButton } from "interfaces" -export = { +export default { name: "inactiveapplicationaccept", description: "Accept an inactivity application.", diff --git a/src/components/buttons/inactiveapplicationdeny.ts b/src/components/buttons/inactiveapplicationdeny.ts index a28241f..666a94e 100644 --- a/src/components/buttons/inactiveapplicationdeny.ts +++ b/src/components/buttons/inactiveapplicationdeny.ts @@ -1,6 +1,6 @@ import { IButton } from "interfaces" -export = { +export default { name: "inactiveapplicationdeny", description: "Denies an inactivity application.", diff --git a/src/components/buttons/staffapplicationaccept.ts b/src/components/buttons/staffapplicationaccept.ts index 0283c61..9a8d040 100644 --- a/src/components/buttons/staffapplicationaccept.ts +++ b/src/components/buttons/staffapplicationaccept.ts @@ -1,9 +1,9 @@ import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js" -import { embedColor } from "config/options" -import staffapp from "schemas/staffAppTag" +import { embedColor } from "config/options.js" +import staffapp from "schemas/staffAppTag.js" import { IButton } from "interfaces" -export = { +export default { name: "staffapplicationaccept", description: "Accept a staff application.", diff --git a/src/components/buttons/staffapplicationdeny.ts b/src/components/buttons/staffapplicationdeny.ts index 36a3435..de738ea 100644 --- a/src/components/buttons/staffapplicationdeny.ts +++ b/src/components/buttons/staffapplicationdeny.ts @@ -1,7 +1,7 @@ import { ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } from "discord.js" import { IButton } from "interfaces" -export = { +export default { name: "staffapplicationdeny", description: "Deny a guild application.", diff --git a/src/components/buttons/staffapply.ts b/src/components/buttons/staffapply.ts index 431ea0b..0769673 100644 --- a/src/components/buttons/staffapply.ts +++ b/src/components/buttons/staffapply.ts @@ -1,15 +1,15 @@ import { ButtonBuilder, ButtonStyle, ActionRowBuilder, GuildMember, TextChannel } from "discord.js" -import { embedColor, staffApplicationsChannel } from "config/options" -import { largeM, ignM } from "config/limitmessages" -import questions from "config/questions" -import { guildRole, guildStaff } from "config/roles" -import staffapp from "schemas/staffAppTag" -import settings from "schemas/settingsTag" +import { embedColor, staffApplicationsChannel } from "config/options.js" +import { largeM, ignM } from "config/limitmessages.js" +import { staff as staffQuestions } from "config/questions.js" +import { guildRole, guildStaff } from "config/roles.js" +import staffapp from "schemas/staffAppTag.js" +import settings from "schemas/settingsTag.js" import { IButton } from "interfaces" -import env from "utils/Env" -import applicationQuestions from "utils/functions/applicationquestions" +import env from "utils/Env.js" +import applicationQuestions from "utils/functions/applicationquestions.js" -export = { +export default { name: "staffapply", description: "Apply for the staff team.", @@ -19,7 +19,6 @@ export = { const userRoles = user.roles.cache const setting = await settings.findOne({ where: { name: "staffAppStatus" } }) const status = setting?.value || "0" - const staffQuestions = questions.staff function sq(n: number): string { return staffQuestions[n - 1].q diff --git a/src/components/buttons/verify.ts b/src/components/buttons/verify.ts index bcd6a18..36ef189 100644 --- a/src/components/buttons/verify.ts +++ b/src/components/buttons/verify.ts @@ -1,7 +1,7 @@ import { ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } from "discord.js" import { IButton } from "interfaces" -export = { +export default { name: "verify", description: "Configure the bot.", diff --git a/src/components/buttons/waitingListUpdate.ts b/src/components/buttons/waitingListUpdate.ts index de4aa50..3335e3d 100644 --- a/src/components/buttons/waitingListUpdate.ts +++ b/src/components/buttons/waitingListUpdate.ts @@ -1,9 +1,9 @@ -import waitinglist from "schemas/waitinglistTag" -import { getGuild, getIGN } from "utils/Hypixel" -import { hypixelGuildID } from "config/options" +import waitinglist from "schemas/waitinglistTag.js" +import { getGuild, getIGN } from "utils/Hypixel.js" +import { hypixelGuildID } from "config/options.js" import { IButton } from "interfaces" -export = { +export default { name: "waitinglistupdate", description: "Update the waiting list.", diff --git a/src/components/modals/denyreasonbox.ts b/src/components/modals/denyreasonbox.ts index 67ef1dc..321d75e 100644 --- a/src/components/modals/denyreasonbox.ts +++ b/src/components/modals/denyreasonbox.ts @@ -1,9 +1,9 @@ import { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, Message, GuildMember } from "discord.js" -import { embedColor } from "config/options" -import guildapp from "schemas/guildAppTag" +import { embedColor } from "config/options.js" +import guildapp from "schemas/guildAppTag.js" import { IModal } from "interfaces" -export = { +export default { name: "denyreasonbox", description: "Deny reason box.", diff --git a/src/components/modals/staffdenyreasonbox.ts b/src/components/modals/staffdenyreasonbox.ts index 111ecd4..5a5d6f8 100644 --- a/src/components/modals/staffdenyreasonbox.ts +++ b/src/components/modals/staffdenyreasonbox.ts @@ -1,9 +1,9 @@ import { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js" -import { embedColor } from "config/options" -import staffapp from "schemas/staffAppTag" +import { embedColor } from "config/options.js" +import staffapp from "schemas/staffAppTag.js" import { IModal } from "interfaces" -export = { +export default { name: "staffdenyreasonbox", description: "Deny reason box.", diff --git a/src/components/modals/verifyModal.ts b/src/components/modals/verifyModal.ts index 1a64369..51f9097 100644 --- a/src/components/modals/verifyModal.ts +++ b/src/components/modals/verifyModal.ts @@ -1,11 +1,11 @@ -import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel" -import { embedColor, hypixelGuildID, devMessage } from "config/options" -import verify from "schemas/verifyTag" -import { gm, manager, moderator, beast, elite, member, guildRole, guildStaff, defaultMember } from "config/roles" +import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js" +import { embedColor, hypixelGuildID, devMessage } from "config/options.js" +import verify from "schemas/verifyTag.js" +import { gm, manager, moderator, beast, elite, member, guildRole, guildStaff, defaultMember } from "config/roles.js" import { IModal } from "interfaces" import { GuildMember } from "discord.js" -export = { +export default { name: "verifybox", description: "Verify box.", diff --git a/src/config/limitmessages.ts b/src/config/limitmessages.ts index c12d3c9..39ea756 100644 --- a/src/config/limitmessages.ts +++ b/src/config/limitmessages.ts @@ -1,6 +1,5 @@ -const limitMessages = { - largeM: "(256 characters max)", - smallM: "(128 characters max)", - ignM: "(16 characters max)" -} -export = limitMessages +const largeM = "(256 characters max)" +const smallM = "(128 characters max)" +const ignM = "(16 characters max)" + +export { largeM, smallM, ignM } \ No newline at end of file diff --git a/src/config/options.ts b/src/config/options.ts index d08d57f..2a955e8 100644 --- a/src/config/options.ts +++ b/src/config/options.ts @@ -1,20 +1,37 @@ -const options = { - embedColor: 0xeeaadb, - guildid: "481741000365178881", - devMessage: "Developed by taken.lua", - applicationsChannel: "776705352456470550", - staffApplicationsChannel: "1039258641393520700", - inactivityLogChannel: "829742524796239882", - staffOtherChannel: "1082036748558803104", - hypixelGuildID: "5a353a170cf2e529044f2935", - onlineLogChannel: "1101144489306886226", - botLogChannel: "1174403585149243472", - guildLogChannel: "1183733282534326322", - errorLogChannel: "1192476369850994788", - moderationLogChannel: "1193329771795447818", - devLogChannel: "1193688673632391280", - waitingListChannel: "1145773618291298384", - waitingListMessage: "1146027645415473193", - instructionsgif: "https://cdn.discordapp.com/attachments/838716950723952640/1188211176300089384/4DMu513uNxbM.gif?ex=6599b2e4&is=65873de4&hm=e727c7a39aacbc47d6a5453f4b5f792a45679983c30d662cd258a311381b6df0&" -} -export = options +const embedColor = 0xeeaadb +const guildid = "481741000365178881" +const devMessage = "Developed by taken.lua" +const applicationsChannel = "776705352456470550" +const staffApplicationsChannel = "1039258641393520700" +const inactivityLogChannel = "829742524796239882" +const staffOtherChannel = "1082036748558803104" +const hypixelGuildID = "5a353a170cf2e529044f2935" +const onlineLogChannel = "1101144489306886226" +const botLogChannel = "1174403585149243472" +const guildLogChannel = "1183733282534326322" +const errorLogChannel = "1192476369850994788" +const moderationLogChannel = "1193329771795447818" +const devLogChannel = "1193688673632391280" +const waitingListChannel = "1145773618291298384" +const waitingListMessage = "1146027645415473193" +const instructionsgif = "https =//cdn.discordapp.com/attachments/838716950723952640/1188211176300089384/4DMu513uNxbM.gif?ex=6599b2e4&is=65873de4&hm=e727c7a39aacbc47d6a5453f4b5f792a45679983c30d662cd258a311381b6df0&" + +export { + embedColor, + guildid, + devMessage, + applicationsChannel, + staffApplicationsChannel, + inactivityLogChannel, + staffOtherChannel, + hypixelGuildID, + onlineLogChannel, + botLogChannel, + guildLogChannel, + errorLogChannel, + moderationLogChannel, + devLogChannel, + waitingListChannel, + waitingListMessage, + instructionsgif +} \ No newline at end of file diff --git a/src/config/questions.ts b/src/config/questions.ts index d512a07..7aa4510 100644 --- a/src/config/questions.ts +++ b/src/config/questions.ts @@ -1,77 +1,76 @@ -const question = { - guild: [ - { - q: "What is your IGN?", - r: "What is your IGN?" - }, - { - q: "What is your hypixel Network Level?", - r: "What is your hypixel Network Level?" - }, - { - q: "What stats are you submitting? (ex. BW lv 135 or SW lv 12 etc..)? Please provide us your best stats of the gamemode you main the most.", - r: "What stats are you submitting?" - }, - { - q: "Which talents make you a good member for Illegitimate? Tell us about your accomplishments, hobbies and ambitions both on Hypixel and in real life.", - r: "Which talents make you a good member for Illegitimate?" - }, - { - q: "Will you be able to make from 100k to 150k gexp x week?", - r: "Will you be able to make from 100k to 150k gexp x week?" - }, - { - q: "Tell us about: your age, what you expect to gain from Illegitimate, whether you play on other accounts; if you often will be inactive; your punishment history; etc… This section is all yours and we expect a longer answer.", - r: "Tell us about yourself." - }, - { - q: "How did you find about us? (Yt, advertisement in lobbies, friend..)", - r: "How did you find about us?" - }, - { - q: "What is your time zone? (Example: GMT+1)", - r: "What is your time zone?" - } - ], - staff: [ - { - q: "What is your IGN?", - r: "What is your IGN?" - }, - { - q: "How long have you been in the guild for?", - r: "How long have you been in the guild for?" - }, - { - q: "Have you been guild muted for any reason? (This includes mutes for staff disrespect, arguing with guild members, toxicity...)", - r: "Have you been guild muted for any reason?" - }, - { - q: "Are you an active guild member? (Keep in mind we will surely check your GEXP)", - r: "Are you an active guild member?" - }, - { - q: "Do you have any experience as a staff member (guild moderator) at all?", - r: "Do you have any experience as a staff member (guild moderator) at all?" - }, - { - q: "Why should we choose you as a Guild Moderator? (Tell us what would you do for the guild, how are you gonna help us grow the community, how many hours per day are you willing to spend doing the stuff as moderator for the guild etc..", - r: "Why should we choose you as a Guild Moderator?" - } - ], - inactivity: [ - { - q: "What is your IGN?", - r: "What is your IGN?" - }, - { - q: "Duration of the absence?", - r: "Duration of the absence?" - }, - { - q: "Reason of the absence?", - r: "Reason of the absence?" - } - ] -} -export = question +const guild = [ + { + q: "What is your IGN?", + r: "What is your IGN?" + }, + { + q: "What is your hypixel Network Level?", + r: "What is your hypixel Network Level?" + }, + { + q: "What stats are you submitting? (ex. BW lv 135 or SW lv 12 etc..)? Please provide us your best stats of the gamemode you main the most.", + r: "What stats are you submitting?" + }, + { + q: "Which talents make you a good member for Illegitimate? Tell us about your accomplishments, hobbies and ambitions both on Hypixel and in real life.", + r: "Which talents make you a good member for Illegitimate?" + }, + { + q: "Will you be able to make from 100k to 150k gexp x week?", + r: "Will you be able to make from 100k to 150k gexp x week?" + }, + { + q: "Tell us about: your age, what you expect to gain from Illegitimate, whether you play on other accounts; if you often will be inactive; your punishment history; etc… This section is all yours and we expect a longer answer.", + r: "Tell us about yourself." + }, + { + q: "How did you find about us? (Yt, advertisement in lobbies, friend..)", + r: "How did you find about us?" + }, + { + q: "What is your time zone? (Example: GMT+1)", + r: "What is your time zone?" + } +] +const staff = [ + { + q: "What is your IGN?", + r: "What is your IGN?" + }, + { + q: "How long have you been in the guild for?", + r: "How long have you been in the guild for?" + }, + { + q: "Have you been guild muted for any reason? (This includes mutes for staff disrespect, arguing with guild members, toxicity...)", + r: "Have you been guild muted for any reason?" + }, + { + q: "Are you an active guild member? (Keep in mind we will surely check your GEXP)", + r: "Are you an active guild member?" + }, + { + q: "Do you have any experience as a staff member (guild moderator) at all?", + r: "Do you have any experience as a staff member (guild moderator) at all?" + }, + { + q: "Why should we choose you as a Guild Moderator? (Tell us what would you do for the guild, how are you gonna help us grow the community, how many hours per day are you willing to spend doing the stuff as moderator for the guild etc..", + r: "Why should we choose you as a Guild Moderator?" + } +] +const inactivity = [ + { + q: "What is your IGN?", + r: "What is your IGN?" + }, + { + q: "Duration of the absence?", + r: "Duration of the absence?" + }, + { + q: "Reason of the absence?", + r: "Reason of the absence?" + } +] + +export { guild, staff, inactivity } \ No newline at end of file diff --git a/src/config/reqs.ts b/src/config/reqs.ts index 539f55e..41ce3b6 100644 --- a/src/config/reqs.ts +++ b/src/config/reqs.ts @@ -1,15 +1,27 @@ -const reqs = { - bwstars: 200, - bwfkdr: 4, - bwwins: 1500, - swstars: 15, - swkdr: 1, - duelswins: 6000, - duelswlr: 3, - beastbwstars: 500, - beastbwfkdr: 7, - beastswstars: 20, - beastswkdr: 2.5, - beastduelswins: 12000 -} -export = reqs +const bwstars = 200 +const bwfkdr = 4 +const bwwins = 1500 +const swstars = 15 +const swkdr = 1 +const duelswins = 6000 +const duelswlr = 3 +const beastbwstars = 500 +const beastbwfkdr = 7 +const beastswstars = 20 +const beastswkdr = 2.5 +const beastduelswins = 12000 + +export { + bwstars, + bwfkdr, + bwwins, + swstars, + swkdr, + duelswins, + duelswlr, + beastbwstars, + beastbwfkdr, + beastswstars, + beastswkdr, + beastduelswins +} \ No newline at end of file diff --git a/src/config/roles.ts b/src/config/roles.ts index 6048de6..79de6f7 100644 --- a/src/config/roles.ts +++ b/src/config/roles.ts @@ -1,18 +1,33 @@ -const roles = { - gm: "815893218246787080", - manager: "815880752683679824", - moderator: "815880910019887134", - elite: "1137654165884129310", - beast: "815880942345519104", - member: "815880984301404190", - guildStaff: "1175860041652379718", - guildRole: "1043224015722000514", - waitingListRole: "1092543315053908120", - defaultMember: "722386801930797056", - admin: "528549814846095360", - helper: "592371991294771226", - muted: "594355088932339732", - countingBanned: "1192183486128341072", - verifyTick: "1201624332674273290" -} -export = roles +const gm = "815893218246787080" +const manager = "815880752683679824" +const moderator = "815880910019887134" +const elite = "1137654165884129310" +const beast = "815880942345519104" +const member = "815880984301404190" +const guildStaff = "1175860041652379718" +const guildRole = "1043224015722000514" +const waitingListRole = "1092543315053908120" +const defaultMember = "722386801930797056" +const admin = "528549814846095360" +const helper = "592371991294771226" +const muted = "594355088932339732" +const countingBanned = "1192183486128341072" +const verifyTick = "1201624332674273290" + +export { + gm, + manager, + moderator, + elite, + beast, + member, + guildStaff, + guildRole, + waitingListRole, + defaultMember, + admin, + helper, + muted, + countingBanned, + verifyTick +} \ No newline at end of file diff --git a/src/config/statuses.ts b/src/config/statuses.ts index 1ed0a70..d778b57 100644 --- a/src/config/statuses.ts +++ b/src/config/statuses.ts @@ -12,4 +12,4 @@ const statuses = [ { name: "urCryhard steal finals again", type: ActivityType.Watching }, { name: "with Perlcence the AI", type: ActivityType.Playing }, ] -export = statuses +export default statuses \ No newline at end of file diff --git a/src/events/cron/weeklyGexp.ts b/src/events/cron/weeklyGexp.ts index dc37477..c29c903 100644 --- a/src/events/cron/weeklyGexp.ts +++ b/src/events/cron/weeklyGexp.ts @@ -1,8 +1,8 @@ -import { hypixelGuildID, guildLogChannel, embedColor, devMessage } from "config/options" -import color from "utils/functions/colors" -import { getGuild, getIGN } from "utils/Hypixel" +import { hypixelGuildID, guildLogChannel, embedColor, devMessage } from "config/options.js" +import color from "utils/functions/colors.js" +import { getGuild, getIGN } from "utils/Hypixel.js" import { ICron, IGuildData } from "interfaces" -import { client } from "utils/Illegitimate" +import { client } from "utils/Illegitimate.js" import { TextChannel } from "discord.js" async function guildWeekly() { @@ -86,7 +86,7 @@ async function guildWeekly() { }) } -export = { +export default { time: { seconds: 0, minutes: 0, diff --git a/src/events/server/guildMemberAdd/logNewJoins.ts b/src/events/server/guildMemberAdd/logNewJoins.ts index 8bf02c0..414e49c 100644 --- a/src/events/server/guildMemberAdd/logNewJoins.ts +++ b/src/events/server/guildMemberAdd/logNewJoins.ts @@ -1,9 +1,9 @@ import { GuildMember, userMention } from "discord.js" -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { IEvent } from "interfaces" -import logToChannel from "utils/functions/logtochannel" +import logToChannel from "utils/functions/logtochannel.js" -export = { +export default { name: "logNewJoins", description: "Logs new joins", event: "guildMemberAdd", diff --git a/src/events/server/interactions/logBtnsCmds.ts b/src/events/server/interactions/logBtnsCmds.ts index d982e84..59c6dcd 100644 --- a/src/events/server/interactions/logBtnsCmds.ts +++ b/src/events/server/interactions/logBtnsCmds.ts @@ -1,8 +1,8 @@ import { ChatInputCommandInteraction, ButtonInteraction } from "discord.js" -import color from "utils/functions/colors" +import color from "utils/functions/colors.js" import { IEvent } from "interfaces" -export = { +export default { name: "logBtnsCmds", description: "Logs all button and command interactions", event: "interactionCreate", diff --git a/src/events/server/messages/eval.ts b/src/events/server/messages/eval.ts index b1a001d..a1f9587 100644 --- a/src/events/server/messages/eval.ts +++ b/src/events/server/messages/eval.ts @@ -1,8 +1,8 @@ import { Message } from "discord.js" import { IEvent } from "interfaces" -import env from "utils/Env" +import env from "utils/Env.js" -export = { +export default { name: "eval", description: "Evaluate a JavaScript expression", event: "messageCreate", diff --git a/src/events/server/messages/react.ts b/src/events/server/messages/react.ts index eeb8d62..64e3f4a 100644 --- a/src/events/server/messages/react.ts +++ b/src/events/server/messages/react.ts @@ -1,7 +1,7 @@ import { IEvent } from "interfaces" import { Message } from "discord.js" -export = { +export default { name: "ur mom", description: "ur moms someone", event: "messageCreate", diff --git a/src/events/server/ready/consolelog.ts b/src/events/server/ready/consolelog.ts index 7d0105e..39ee5da 100644 --- a/src/events/server/ready/consolelog.ts +++ b/src/events/server/ready/consolelog.ts @@ -1,8 +1,8 @@ import { IEvent } from "interfaces" -import { ExtendedClient as Client } from "utils/Client" -import color from "utils/functions/colors" +import { ExtendedClient as Client } from "utils/Client.js" +import color from "utils/functions/colors.js" -export = { +export default { name: "conolelog", description: "console log", event: "ready", diff --git a/src/events/server/ready/sendOnlineMessage.ts b/src/events/server/ready/sendOnlineMessage.ts index 217cf15..6518499 100644 --- a/src/events/server/ready/sendOnlineMessage.ts +++ b/src/events/server/ready/sendOnlineMessage.ts @@ -1,8 +1,8 @@ -import logToChannel from "utils/functions/logtochannel" +import logToChannel from "utils/functions/logtochannel.js" import { IEvent } from "interfaces" -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" -export = { +export default { name: "sendonlinemessage", description: "send an online message", event: "ready", diff --git a/src/events/server/ready/status.ts b/src/events/server/ready/status.ts index 9184f2e..5eecec3 100644 --- a/src/events/server/ready/status.ts +++ b/src/events/server/ready/status.ts @@ -1,10 +1,10 @@ -import { guildid } from "config/options" -import statuses from "config/statuses" +import { guildid } from "config/options.js" +import statuses from "config/statuses.js" import { Guild } from "discord.js" import { IEvent } from "interfaces" -import { ExtendedClient as Client } from "utils/Client" +import { ExtendedClient as Client } from "utils/Client.js" -export = { +export default { name: "status", description: "Sets the status of the bot", event: "ready", diff --git a/src/events/server/voiceStateUpdate/vcJoinLeave.ts b/src/events/server/voiceStateUpdate/vcJoinLeave.ts index 7d72f3e..abb0ff8 100644 --- a/src/events/server/voiceStateUpdate/vcJoinLeave.ts +++ b/src/events/server/voiceStateUpdate/vcJoinLeave.ts @@ -1,9 +1,9 @@ import { userMention, channelMention, VoiceState } from "discord.js" -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { IEvent } from "interfaces" -import logToChannel from "utils/functions/logtochannel" +import logToChannel from "utils/functions/logtochannel.js" -export = { +export default { name: "vcJoinLeave", description: "Logs when a user joins or leaves a voice channel.", event: "voiceStateUpdate", diff --git a/src/index.ts b/src/index.ts index 43adbae..b7b9fb2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,3 @@ -import { Illegitimate } from "utils/Illegitimate" +import { Illegitimate } from "utils/Illegitimate.js" new Illegitimate().start() diff --git a/src/interfaces/IAutocomplete.ts b/src/interfaces/IAutocomplete.ts index 834c679..30b8ac5 100644 --- a/src/interfaces/IAutocomplete.ts +++ b/src/interfaces/IAutocomplete.ts @@ -1,5 +1,5 @@ import { AutocompleteInteraction } from "discord.js" -import { ExtendedClient } from "utils/Client" +import { ExtendedClient } from "utils/Client.js" export default interface IAutocomplete { name: string diff --git a/src/interfaces/IButton.ts b/src/interfaces/IButton.ts index 2dd6af4..1e8b64c 100644 --- a/src/interfaces/IButton.ts +++ b/src/interfaces/IButton.ts @@ -1,5 +1,5 @@ import { ButtonInteraction } from "discord.js" -import { ExtendedClient } from "utils/Client" +import { ExtendedClient } from "utils/Client.js" export default interface IButton { name: string diff --git a/src/interfaces/ICommand.ts b/src/interfaces/ICommand.ts index dda9ecf..406924e 100644 --- a/src/interfaces/ICommand.ts +++ b/src/interfaces/ICommand.ts @@ -1,5 +1,5 @@ import { ChatInputCommandInteraction, SlashCommandBuilder } from "discord.js" -import { ExtendedClient as Client } from "utils/Client" +import { ExtendedClient as Client } from "utils/Client.js" export default interface ICommand { name: string diff --git a/src/interfaces/IContextMenu.ts b/src/interfaces/IContextMenu.ts index 83079d6..dfdae5a 100644 --- a/src/interfaces/IContextMenu.ts +++ b/src/interfaces/IContextMenu.ts @@ -1,5 +1,5 @@ import { ContextMenuCommandInteraction, ContextMenuCommandBuilder } from "discord.js" -import { ExtendedClient } from "utils/Client" +import { ExtendedClient } from "utils/Client.js" export default interface IContextMenu { name: string diff --git a/src/interfaces/IModal.ts b/src/interfaces/IModal.ts index c2dd9bf..2762209 100644 --- a/src/interfaces/IModal.ts +++ b/src/interfaces/IModal.ts @@ -1,5 +1,5 @@ import { ModalSubmitInteraction } from "discord.js" -import { ExtendedClient } from "utils/Client" +import { ExtendedClient } from "utils/Client.js" export default interface IModal { name: string diff --git a/src/schemas/guildAppTag.ts b/src/schemas/guildAppTag.ts index 31c35d7..3db41a8 100644 --- a/src/schemas/guildAppTag.ts +++ b/src/schemas/guildAppTag.ts @@ -1,5 +1,5 @@ import Sequelize, { InferAttributes, InferCreationAttributes, Model } from "sequelize" -import { sequelize } from "utils/Illegitimate" +import { sequelize } from "utils/Illegitimate.js" interface GuildApp extends Model, InferCreationAttributes> { userID: string diff --git a/src/schemas/settingsTag.ts b/src/schemas/settingsTag.ts index c2cfc61..733d4d2 100644 --- a/src/schemas/settingsTag.ts +++ b/src/schemas/settingsTag.ts @@ -1,5 +1,5 @@ import Sequelize, { InferAttributes, InferCreationAttributes, Model } from "sequelize" -import { sequelize } from "utils/Illegitimate" +import { sequelize } from "utils/Illegitimate.js" interface Settings extends Model, InferCreationAttributes> { name: string diff --git a/src/schemas/staffAppTag.ts b/src/schemas/staffAppTag.ts index c6592aa..629f0c8 100644 --- a/src/schemas/staffAppTag.ts +++ b/src/schemas/staffAppTag.ts @@ -1,5 +1,5 @@ import Sequelize, { InferAttributes, InferCreationAttributes, Model } from "sequelize" -import { sequelize } from "utils/Illegitimate" +import { sequelize } from "utils/Illegitimate.js" interface StaffApp extends Model, InferCreationAttributes> { userID: string diff --git a/src/schemas/verifyTag.ts b/src/schemas/verifyTag.ts index 575e768..c556dc0 100644 --- a/src/schemas/verifyTag.ts +++ b/src/schemas/verifyTag.ts @@ -1,5 +1,5 @@ import Sequelize, { InferAttributes, InferCreationAttributes, Model } from "sequelize" -import { sequelize } from "utils/Illegitimate" +import { sequelize } from "utils/Illegitimate.js" interface Verify extends Model, InferCreationAttributes> { userID: string diff --git a/src/schemas/waitinglistTag.ts b/src/schemas/waitinglistTag.ts index fd40bfe..31d1219 100644 --- a/src/schemas/waitinglistTag.ts +++ b/src/schemas/waitinglistTag.ts @@ -1,5 +1,5 @@ import Sequelize, { InferAttributes, InferCreationAttributes, Model } from "sequelize" -import { sequelize } from "utils/Illegitimate" +import { sequelize } from "utils/Illegitimate.js" interface WaitingList extends Model, InferCreationAttributes> { userID: string; diff --git a/src/typings/index.ts b/src/typings/index.ts index 2d968d7..7b76987 100644 --- a/src/typings/index.ts +++ b/src/typings/index.ts @@ -1,5 +1,5 @@ import { ChatInputCommandInteraction } from "discord.js" -import { ExtendedClient } from "utils/Client" +import { ExtendedClient } from "utils/Client.js" import TZs from "./TimeZones" export type TimeZones = typeof TZs[number] diff --git a/src/utils/Autodeploy.ts b/src/utils/Autodeploy.ts index f7f0f0a..e27f20c 100644 --- a/src/utils/Autodeploy.ts +++ b/src/utils/Autodeploy.ts @@ -1,9 +1,9 @@ import fs from "fs" -import { ExtendedClient } from "./Client" -import env from "./Env" +import { ExtendedClient } from "./Client.js" +import env from "./Env.js" import { ICommand } from "interfaces" import { RESTPostAPIChatInputApplicationCommandsJSONBody } from "discord.js" -import color from "./functions/colors" +import color from "./functions/colors.js" type FileType = "js" | "ts" export default async function autoDeployCommands(fileType: FileType, client: ExtendedClient) { @@ -20,7 +20,9 @@ export default async function autoDeployCommands(fileType: FileType, client: Ext } for (const file of commandFiles) { - const command: ICommand = require(`../commands/${file}`) + // const command: ICommand = require(`../commands/${file}`) + const { default: commandImport } = await import(`../commands/${file}`) + const command: ICommand = commandImport if (command.dev) { commands.push(command.data.toJSON()) } diff --git a/src/utils/Client.ts b/src/utils/Client.ts index b3f02b4..beca26b 100644 --- a/src/utils/Client.ts +++ b/src/utils/Client.ts @@ -1,8 +1,8 @@ import { Client, Collection, GatewayIntentBits, Partials } from "discord.js" -import color from "./functions/colors" +import color from "./functions/colors.js" import { ICommand, IContextMenu, IButton, IModal, IAutocomplete } from "interfaces" -import env from "./Env" -import autoDeployCommands from "./Autodeploy" +import env from "./Env.js" +import autoDeployCommands from "./Autodeploy.js" export class ExtendedClient extends Client { commands: Collection = new Collection() diff --git a/src/utils/Events/autocomplete.ts b/src/utils/Events/autocomplete.ts index f8a58b3..b1a01d4 100644 --- a/src/utils/Events/autocomplete.ts +++ b/src/utils/Events/autocomplete.ts @@ -1,20 +1,22 @@ -import { ExtendedClient as Client } from "utils/Client" -import { embedColor } from "config/options" +import { ExtendedClient as Client } from "utils/Client.js" +import { embedColor } from "config/options.js" import { IAutocomplete } from "interfaces" import { Events } from "discord.js" -import color from "utils/functions/colors" +import color from "utils/functions/colors.js" import path from "path" import fs from "fs" -import logToChannel from "utils/functions/logtochannel" +import logToChannel from "utils/functions/logtochannel.js" type FileType = "js" | "ts" +const __dirname = import.meta.dirname -export default function loadAutocompleteEvents(client: Client, ft: FileType) { +export default async function loadAutocompleteEvents(client: Client, ft: FileType) { const autocompletePath = path.join(__dirname, "..", "..", "components", "autocomplete") const autocompleteFiles = fs.readdirSync(autocompletePath).filter(file => file.endsWith(ft)) for (const file of autocompleteFiles) { const filePath = path.join(autocompletePath, file) - const autocomplete: IAutocomplete = require(filePath) + const { default: autocompleteImport } = await import("file://" + filePath) + const autocomplete: IAutocomplete = autocompleteImport if ("name" in autocomplete && "execute" in autocomplete) { client.autocomplete.set(autocomplete.name, autocomplete) @@ -26,7 +28,6 @@ export default function loadAutocompleteEvents(client: Client, ft: FileType) { ) ) } - delete require.cache[require.resolve(filePath)] } client.on(Events.InteractionCreate, async interaction => { diff --git a/src/utils/Events/button.ts b/src/utils/Events/button.ts index f825b0a..c8fe38b 100644 --- a/src/utils/Events/button.ts +++ b/src/utils/Events/button.ts @@ -1,20 +1,22 @@ -import { ExtendedClient as Client } from "utils/Client" -import color from "utils/functions/colors" -import { embedColor } from "config/options" +import { ExtendedClient as Client } from "utils/Client.js" +import color from "utils/functions/colors.js" +import { embedColor } from "config/options.js" import { IButton } from "interfaces" import { Events } from "discord.js" import path from "path" import fs from "fs" -import logToChannel from "utils/functions/logtochannel" +import logToChannel from "utils/functions/logtochannel.js" type FileType = "js" | "ts" +const __dirname = import.meta.dirname -export default function loadButtonEvents(client: Client, ft: FileType) { +export default async function loadButtonEvents(client: Client, ft: FileType) { const btnPath = path.join(__dirname, "..", "..", "components", "buttons") const btnFiles = fs.readdirSync(btnPath).filter(file => file.endsWith(ft)) for (const file of btnFiles) { const filePath = path.join(btnPath, file) - const btn: IButton = require(filePath) + const { default: btnImport } = await import("file://" + filePath) + const btn: IButton = btnImport if ("name" in btn && "execute" in btn) { client.buttons.set(btn.name, btn) @@ -26,7 +28,6 @@ export default function loadButtonEvents(client: Client, ft: FileType) { ) ) } - delete require.cache[require.resolve(filePath)] } client.on(Events.InteractionCreate, async interaction => { diff --git a/src/utils/Events/command.ts b/src/utils/Events/command.ts index c41f1d5..bd4599e 100644 --- a/src/utils/Events/command.ts +++ b/src/utils/Events/command.ts @@ -1,20 +1,22 @@ -import { ExtendedClient as Client } from "utils/Client" -import color from "utils/functions/colors" -import { embedColor } from "config/options" +import { ExtendedClient as Client } from "utils/Client.js" +import color from "utils/functions/colors.js" +import { embedColor } from "config/options.js" import { ICommand } from "interfaces" import { Events } from "discord.js" import path from "path" import fs from "fs" -import logToChannel from "utils/functions/logtochannel" +import logToChannel from "utils/functions/logtochannel.js" type FileType = "js" | "ts" +const __dirname = import.meta.dirname -export default function loadSlashCommandsEvents(client: Client, ft: FileType) { +export default async function loadSlashCommandsEvents(client: Client, ft: FileType) { const cmdPath = path.join(__dirname, "..", "..", "commands") const cmdFiles = fs.readdirSync(cmdPath).filter(file => file.endsWith(ft)) for (const file of cmdFiles) { const filePath = path.join(cmdPath, file) - const cmd: ICommand = require(filePath) + const { default: cmdImport } = await import("file://" + filePath) + const cmd: ICommand = cmdImport if ("data" in cmd && "execute" in cmd) { client.commands.set(cmd.data.name, cmd) @@ -26,7 +28,6 @@ export default function loadSlashCommandsEvents(client: Client, ft: FileType) { ) ) } - delete require.cache[require.resolve(filePath)] } //! command handler diff --git a/src/utils/Events/contextmenu.ts b/src/utils/Events/contextmenu.ts index 184e4bc..bc03fce 100644 --- a/src/utils/Events/contextmenu.ts +++ b/src/utils/Events/contextmenu.ts @@ -1,20 +1,22 @@ -import { ExtendedClient as Client } from "utils/Client" -import color from "utils/functions/colors" +import { ExtendedClient as Client } from "utils/Client.js" +import color from "utils/functions/colors.js" import { IContextMenu } from "interfaces" -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { Events } from "discord.js" import path from "path" import fs from "fs" -import logToChannel from "utils/functions/logtochannel" +import logToChannel from "utils/functions/logtochannel.js" type FileType = "js" | "ts" +const __dirname = import.meta.dirname -export default function loadContextMenuEvents(client: Client, ft: FileType) { +export default async function loadContextMenuEvents(client: Client, ft: FileType) { const contextMenuPath = path.join(__dirname, "..", "..", "commands-contextmenu") const contextMenuFiles = fs.readdirSync(contextMenuPath).filter(file => file.endsWith(ft)) for (const file of contextMenuFiles) { const filePath = path.join(contextMenuPath, file) - const cmd: IContextMenu = require(filePath) + const { default: cmdImport } = await import("file://" + filePath) + const cmd: IContextMenu = cmdImport if ("data" in cmd && "execute" in cmd) { client.contextmenus.set(cmd.data.name, cmd) @@ -26,7 +28,6 @@ export default function loadContextMenuEvents(client: Client, ft: FileType) { ) ) } - delete require.cache[require.resolve(filePath)] } //! context menu command handler diff --git a/src/utils/Events/cron.ts b/src/utils/Events/cron.ts index c0b262d..0fbe9d9 100644 --- a/src/utils/Events/cron.ts +++ b/src/utils/Events/cron.ts @@ -2,14 +2,16 @@ import { CronJob } from "cron" import path from "path" import fs from "fs" import { ICron } from "interfaces" +const __dirname = import.meta.dirname -export default function loadCronEvents() { +export default async function loadCronEvents() { const cronPath = path.join(__dirname, "..", "..", "events", "cron") const cronFiles = fs.readdirSync(cronPath).filter(file => file.endsWith(".js")) for (const file of cronFiles) { const filePath = path.join(cronPath, file) - const cron: ICron = require(filePath) + const { default: cronImport } = await import("file://" + filePath) + const cron: ICron = cronImport const time = cron.time.seconds + " " + @@ -20,6 +22,5 @@ export default function loadCronEvents() { cron.time.dayOfWeek new CronJob(time, cron.execute, cron.onComplete, cron.start, cron.timeZone).start() - delete require.cache[require.resolve(filePath)] } } diff --git a/src/utils/Events/events.ts b/src/utils/Events/events.ts index 2837bf0..34c7536 100644 --- a/src/utils/Events/events.ts +++ b/src/utils/Events/events.ts @@ -1,20 +1,21 @@ -import { ExtendedClient as Client } from "utils/Client" +import { ExtendedClient as Client } from "utils/Client.js" import { IEvent } from "interfaces" import path from "path" import fs from "fs" +const __dirname = import.meta.dirname -export default function loadEvents(client: Client) { +export default async function loadEvents(client: Client) { const serverDir = path.join(__dirname, "..", "..", "events", "server") const eventDirs = fs.readdirSync(serverDir) for (const eventDir of eventDirs) { const eventFiles = fs.readdirSync(path.join(serverDir, eventDir)) for (const eventFile of eventFiles) { const eventPath = path.join(serverDir, eventDir, eventFile) - const event: IEvent = require(eventPath) + const { default: eventImport } = await import("file://" + eventPath) + const event: IEvent = eventImport if (!event.disabled) { client.on(event.event, event.execute) } - delete require.cache[require.resolve(eventPath)] } } } diff --git a/src/utils/Events/index.ts b/src/utils/Events/index.ts deleted file mode 100644 index e1c2ad6..0000000 --- a/src/utils/Events/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ExtendedClient as Client } from "../Client" -import loadAutocompleteEvents from "./autocomplete" -import loadButtonEvents from "./button" -import loadSlashCommandsEvents from "./command" -import loadContextMenuEvents from "./contextmenu" -import loadCronEvents from "./cron" -import loadEvents from "./events" -import loadModalEvents from "./modal" - -export default function loadAllEvents(client: Client, ft: "js" | "ts") { - loadEvents(client) - loadButtonEvents(client, ft) - loadSlashCommandsEvents(client, ft) - loadContextMenuEvents(client, ft) - loadModalEvents(client, ft) - loadAutocompleteEvents(client, ft) - loadCronEvents() -} diff --git a/src/utils/Events/loadevents.ts b/src/utils/Events/loadevents.ts new file mode 100644 index 0000000..79c5f2d --- /dev/null +++ b/src/utils/Events/loadevents.ts @@ -0,0 +1,18 @@ +import { ExtendedClient as Client } from "../Client.js" +import loadAutocompleteEvents from "./autocomplete.js" +import loadButtonEvents from "./button.js" +import loadSlashCommandsEvents from "./command.js" +import loadContextMenuEvents from "./contextmenu.js" +import loadCronEvents from "./cron.js" +import loadEvents from "./events.js" +import loadModalEvents from "./modal.js" + +export default async function loadAllEvents(client: Client, ft: "js" | "ts") { + await loadEvents(client) + await loadButtonEvents(client, ft) + await loadSlashCommandsEvents(client, ft) + await loadContextMenuEvents(client, ft) + await loadModalEvents(client, ft) + await loadAutocompleteEvents(client, ft) + await loadCronEvents() +} diff --git a/src/utils/Events/modal.ts b/src/utils/Events/modal.ts index 33a7994..973b887 100644 --- a/src/utils/Events/modal.ts +++ b/src/utils/Events/modal.ts @@ -1,20 +1,22 @@ -import { ExtendedClient as Client } from "utils/Client" -import color from "utils/functions/colors" -import { embedColor } from "config/options" +import { ExtendedClient as Client } from "utils/Client.js" +import color from "utils/functions/colors.js" +import { embedColor } from "config/options.js" import { IModal } from "interfaces" import { Events } from "discord.js" import path from "path" import fs from "fs" -import logToChannel from "utils/functions/logtochannel" +import logToChannel from "utils/functions/logtochannel.js" type FileType = "js" | "ts" +const __dirname = import.meta.dirname -export default function loadModalEvents(client: Client, ft: FileType) { +export default async function loadModalEvents(client: Client, ft: FileType) { const modalPath = path.join(__dirname, "..", "..", "components", "modals") const modalFiles = fs.readdirSync(modalPath).filter(file => file.endsWith(ft)) for (const file of modalFiles) { const filePath = path.join(modalPath, file) - const modal: IModal = require(filePath) + const { default: modalImport } = await import("file://" + filePath) + const modal: IModal = modalImport if ("name" in modal && "execute" in modal) { client.modals.set(modal.name, modal) @@ -26,7 +28,6 @@ export default function loadModalEvents(client: Client, ft: FileType) { ) ) } - delete require.cache[require.resolve(filePath)] } client.on(Events.InteractionCreate, async interaction => { diff --git a/src/utils/Hypixel.ts b/src/utils/Hypixel.ts new file mode 100644 index 0000000..ced9885 --- /dev/null +++ b/src/utils/Hypixel.ts @@ -0,0 +1,6 @@ +export { skywarsLevel } from "./HypixelFunctions/skywars.js" +export { bedwarsLevel } from "./HypixelFunctions/bedwars.js" +export { hypixelLevel } from "./HypixelFunctions/main.js" +export { formatUuid } from "./HypixelFunctions/uuid.js" +export { guildLevel, scaledGEXP } from "./HypixelFunctions/guild.js" +export { getUUID, getIGN, getPlayer, getGuild, getHeadURL } from "./HypixelFunctions/account.js" diff --git a/src/utils/Hypixel/index.ts b/src/utils/Hypixel/index.ts deleted file mode 100644 index 4d5f677..0000000 --- a/src/utils/Hypixel/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { skywarsLevel } from "./skywars" -export { bedwarsLevel } from "./bedwars" -export { hypixelLevel } from "./hypixel" -export { formatUuid } from "./uuid" -export { guildLevel, scaledGEXP } from "./guild" -export { getUUID, getIGN, getPlayer, getGuild, getHeadURL } from "./account" diff --git a/src/utils/Hypixel/account.ts b/src/utils/HypixelFunctions/account.ts similarity index 98% rename from src/utils/Hypixel/account.ts rename to src/utils/HypixelFunctions/account.ts index c85b4c8..eb2e846 100644 --- a/src/utils/Hypixel/account.ts +++ b/src/utils/HypixelFunctions/account.ts @@ -1,5 +1,5 @@ import fetch from "axios" -import env from "utils/Env" +import env from "utils/Env.js" import { IPlayer, IPlayerData } from "interfaces" import { IGuild, IGuildData } from "interfaces" const apikey = env.prod.hypixelapikey diff --git a/src/utils/Hypixel/bedwars.ts b/src/utils/HypixelFunctions/bedwars.ts similarity index 100% rename from src/utils/Hypixel/bedwars.ts rename to src/utils/HypixelFunctions/bedwars.ts diff --git a/src/utils/Hypixel/guild.ts b/src/utils/HypixelFunctions/guild.ts similarity index 100% rename from src/utils/Hypixel/guild.ts rename to src/utils/HypixelFunctions/guild.ts diff --git a/src/utils/Hypixel/hypixel.ts b/src/utils/HypixelFunctions/main.ts similarity index 100% rename from src/utils/Hypixel/hypixel.ts rename to src/utils/HypixelFunctions/main.ts diff --git a/src/utils/Hypixel/skywars.ts b/src/utils/HypixelFunctions/skywars.ts similarity index 100% rename from src/utils/Hypixel/skywars.ts rename to src/utils/HypixelFunctions/skywars.ts diff --git a/src/utils/Hypixel/uuid.ts b/src/utils/HypixelFunctions/uuid.ts similarity index 100% rename from src/utils/Hypixel/uuid.ts rename to src/utils/HypixelFunctions/uuid.ts diff --git a/src/utils/Illegitimate.ts b/src/utils/Illegitimate.ts index 6c2f1e3..8522257 100644 --- a/src/utils/Illegitimate.ts +++ b/src/utils/Illegitimate.ts @@ -1,9 +1,9 @@ -import { ExtendedClient as Client } from "utils/Client" -import color from "utils/functions/colors" +import { ExtendedClient as Client } from "utils/Client.js" +import color from "utils/functions/colors.js" import { Redis } from "ioredis" -import env from "utils/Env" +import env from "utils/Env.js" // import { connect } from "mongoose" -import loadAllEvents from "./Events" +import loadAllEvents from "./Events/loadevents.js" import { Player } from "discord-player" import { Sequelize } from "sequelize" @@ -31,7 +31,7 @@ if (process.env.NODE_ENV === "dev" && process.env.TYPESCRIPT === "true") { class Illegitimate { async start() { await this.init() - loadAllEvents(client, ft) + await loadAllEvents(client, ft) await player.extractors.loadDefault() await client.start() await this.databases() diff --git a/src/utils/functions/applicationquestions.ts b/src/utils/functions/applicationquestions.ts index ca10d29..05fc511 100644 --- a/src/utils/functions/applicationquestions.ts +++ b/src/utils/functions/applicationquestions.ts @@ -1,6 +1,6 @@ -import { embedColor } from "config/options" +import { embedColor } from "config/options.js" import { Collection, EmbedBuilder, GuildMember, Message } from "discord.js" -import { getUUID } from "utils/Hypixel" +import { getUUID } from "utils/Hypixel.js" const tooLong = new EmbedBuilder() .setDescription("You took too long to respond.") diff --git a/src/utils/functions/logtochannel.ts b/src/utils/functions/logtochannel.ts index 47bafec..2f7bc3a 100644 --- a/src/utils/functions/logtochannel.ts +++ b/src/utils/functions/logtochannel.ts @@ -6,9 +6,9 @@ import { errorLogChannel, moderationLogChannel, devLogChannel -} from "config/options" +} from "config/options.js" import { Guild, MessageCreateOptions, TextChannel } from "discord.js" -import { client } from "utils/Illegitimate" +import { client } from "utils/Illegitimate.js" const channels = { online: onlineLogChannel, diff --git a/src/utils/functions/rolesmanage.ts b/src/utils/functions/rolesmanage.ts index 8fefddb..5a61497 100644 --- a/src/utils/functions/rolesmanage.ts +++ b/src/utils/functions/rolesmanage.ts @@ -9,7 +9,7 @@ import { guildRole, defaultMember, verifyTick -} from "config/roles" +} from "config/roles.js" const roles = [ gm, manager, diff --git a/tsconfig.json b/tsconfig.json index 14d32f9..255e0d8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,9 @@ { "compilerOptions": { "target": "ES2022", - "module": "Node16", - "moduleResolution": "Node16", + "module": "ES2022", + "moduleResolution": "Bundler", + "noEmit": true, "strict": true, "noImplicitAny": true, "declaration": false,