Merge branch 'dev' into 'main'

Dev

See merge request illegitimate/illegitimate-bot!274
This commit is contained in:
2024-09-07 22:31:23 +00:00
110 changed files with 579 additions and 450 deletions

33
dprint.json Normal file
View File

@@ -0,0 +1,33 @@
{
"$schema": "https://plugins.dprint.dev/dprint/dprint-plugin-typescript/latest/schema.json",
"typescript": {
"lineWidth": 150,
"indentWidth": 4,
"useTabs": false,
"semiColons": "asi",
"quoteStyle": "alwaysDouble",
"newLineKind": "lf",
"bracePosition": "sameLine",
"trailingCommas": "never",
"operatorPosition": "maintain",
"typeLiteral.separatorKind.singleLine": "comma",
"typeLiteral.separatorKind.multiLine": "semiColon"
},
"json": {
"indentWidth": "4"
},
"markdown": {
},
"toml": {
},
"excludes": [
"**/node_modules",
"**/*-lock.json"
],
"plugins": [
"https://plugins.dprint.dev/typescript-0.91.8.wasm",
"https://plugins.dprint.dev/json-0.19.3.wasm",
"https://plugins.dprint.dev/markdown-0.17.8.wasm",
"https://plugins.dprint.dev/toml-0.6.2.wasm"
]
}

View File

@@ -19,6 +19,7 @@
"dev:conc": "conc --names \"SWC,BOT\" --prefix-colors \"blue, magenta\" \"yarn watch\" \"yarn dev:js\"", "dev:conc": "conc --names \"SWC,BOT\" --prefix-colors \"blue, magenta\" \"yarn watch\" \"yarn dev:js\"",
"dev:ts": "nodemon --config nodemon.json src/index.ts", "dev:ts": "nodemon --config nodemon.json src/index.ts",
"dev:js": "nodemon --config nodemon-js.json dist/index.js", "dev:js": "nodemon --config nodemon-js.json dist/index.js",
"format": "dprint fmt \"**/*.ts\"",
"check": "tsc --noEmit", "check": "tsc --noEmit",
"lint": "eslint", "lint": "eslint",
"lint:fix": "eslint --fix", "lint:fix": "eslint --fix",
@@ -61,6 +62,7 @@
"chokidar": "^3.6.0", "chokidar": "^3.6.0",
"concurrently": "^8.2.2", "concurrently": "^8.2.2",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"dprint": "^0.47.2",
"eslint": "^9.9.0", "eslint": "^9.9.0",
"globals": "^15.9.0", "globals": "^15.9.0",
"sqlite3": "^5.1.7", "sqlite3": "^5.1.7",

View File

@@ -8,7 +8,7 @@ async function deleteCommands() {
console.log("Started deleting application (/) commands.") console.log("Started deleting application (/) commands.")
await rest.put( await rest.put(
Routes.applicationGuildCommands(env.dev.devid, env.dev.guildid), Routes.applicationGuildCommands(env.dev.devid, env.dev.guildid),
{ body: [] }, { body: [] }
) )
console.log("Successfully deleted application (/) commands.") console.log("Successfully deleted application (/) commands.")
} catch (error) { } catch (error) {

View File

@@ -2,7 +2,7 @@ import { REST, RESTPutAPIApplicationCommandsJSONBody, Routes } from "discord.js"
import fs from "node:fs" import fs from "node:fs"
import { ICommand } from "../src/interfaces" import { ICommand } from "../src/interfaces"
import env from "../src/utils/Env" import env from "../src/utils/Env"
import color from "../src/utils/functions/colors" import { color } from "../src/utils/functions/colors"
const rest = new REST({ version: "10" }).setToken(env.prod.token) const rest = new REST({ version: "10" }).setToken(env.prod.token)
const commands: RESTPutAPIApplicationCommandsJSONBody = [] const commands: RESTPutAPIApplicationCommandsJSONBody = []
@@ -18,7 +18,7 @@ for (const file of contentMenuCommands) {
commands.push(command.data.toJSON()) commands.push(command.data.toJSON())
} }
(async () => { ;(async () => {
try { try {
console.log(color(`Started refreshing ${commands.length} application (/) commands.`, "green")) console.log(color(`Started refreshing ${commands.length} application (/) commands.`, "green"))
@@ -27,12 +27,11 @@ for (const file of contentMenuCommands) {
await rest.put( await rest.put(
Routes.applicationCommands(env.dev.clientid), Routes.applicationCommands(env.dev.clientid),
{ body: commands }, { body: commands }
).then(() => { ).then(() => {
console.log(color(`Successfully reloaded ${commands.length} application (/) commands.`, "green")) console.log(color(`Successfully reloaded ${commands.length} application (/) commands.`, "green"))
process.exit(0) process.exit(0)
}) })
} catch (error) { } catch (error) {
console.error(error) console.error(error)
} }

View File

@@ -1,7 +1,7 @@
import { REST, RESTPutAPIApplicationCommandsJSONBody, Routes } from "discord.js" import { REST, RESTPutAPIApplicationCommandsJSONBody, Routes } from "discord.js"
import fs from "fs" import fs from "fs"
import env from "../src/utils/Env"
import { ICommand } from "../src/interfaces" import { ICommand } from "../src/interfaces"
import env from "../src/utils/Env"
const rest = new REST({ version: "10" }).setToken(env.dev.devtoken) const rest = new REST({ version: "10" }).setToken(env.dev.devtoken)
const commands: RESTPutAPIApplicationCommandsJSONBody = [] const commands: RESTPutAPIApplicationCommandsJSONBody = []
@@ -21,13 +21,13 @@ for (const file of contentMenuCommands) {
} }
} }
(async () => { ;(async () => {
try { try {
console.log(`Started refreshing ${commands.length} application (/) commands.`) console.log(`Started refreshing ${commands.length} application (/) commands.`)
await rest.put( await rest.put(
Routes.applicationGuildCommands(env.dev.devid, env.dev.guildid), Routes.applicationGuildCommands(env.dev.devid, env.dev.guildid),
{ body: commands }, { body: commands }
).then(() => { ).then(() => {
console.log(`Successfully reloaded ${commands.length} application (/) commands.`) console.log(`Successfully reloaded ${commands.length} application (/) commands.`)
process.exit(0) process.exit(0)

View File

@@ -1,4 +1,4 @@
import { ContextMenuCommandBuilder, ApplicationCommandType, PermissionFlagsBits, userMention } from "discord.js" import { ApplicationCommandType, ContextMenuCommandBuilder, PermissionFlagsBits, userMention } from "discord.js"
import { IContextMenu } from "interfaces" import { IContextMenu } from "interfaces"
export default { export default {

View File

@@ -1,4 +1,4 @@
import { ContextMenuCommandBuilder, ApplicationCommandType, PermissionFlagsBits } from "discord.js" import { ApplicationCommandType, ContextMenuCommandBuilder, PermissionFlagsBits } from "discord.js"
import { IContextMenu } from "interfaces" import { IContextMenu } from "interfaces"
export default { export default {

View File

@@ -1,10 +1,10 @@
import { devMessage, embedColor, hypixelGuildID } from "config/options.js"
import { waitingListRole } from "config/roles.js"
import { ApplicationCommandType, ContextMenuCommandBuilder, PermissionFlagsBits, userMention } from "discord.js" import { ApplicationCommandType, ContextMenuCommandBuilder, PermissionFlagsBits, userMention } from "discord.js"
import { embedColor, devMessage, hypixelGuildID } from "config/options.js"
import { IContextMenu } from "interfaces" import { IContextMenu } from "interfaces"
import verify from "schemas/verifyTag.js" import verify from "schemas/verifyTag.js"
import { getGuild, getHeadURL, getIGN } from "utils/Hypixel.js"
import roleManage from "utils/functions/rolesmanage.js" import roleManage from "utils/functions/rolesmanage.js"
import { waitingListRole } from "config/roles.js" import { getGuild, getHeadURL, getIGN } from "utils/Hypixel.js"
export default { export default {
name: "Update User", name: "Update User",

View File

@@ -1,15 +1,13 @@
import { anilist } from "anilist"
import { devMessage, embedColor } from "config/options.js"
import { SlashCommandBuilder } from "discord.js" import { SlashCommandBuilder } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import { devMessage, embedColor } from "config/options.js"
import { anilist } from "anilist"
import { capitalizeFirstLetter, removeIndents } from "utils/functions/funcs.js"
export default { export default {
name: "anime", name: "anime",
description: "Anime subcommands", description: "Anime subcommands",
public: true, public: true,
dev: false, dev: false,
subcommands: true,
data: new SlashCommandBuilder() data: new SlashCommandBuilder()
.setName("anime") .setName("anime")
@@ -59,14 +57,14 @@ export default {
const animeEpisodes = anime.episodes ? animeEpisodesRaw : "No episodes available" const animeEpisodes = anime.episodes ? animeEpisodesRaw : "No episodes available"
const animeStartDate = [anime.startDate?.day || "??", anime.startDate?.month || "??", anime.startDate?.year || "????"].join(".") const animeStartDate = [anime.startDate?.day || "??", anime.startDate?.month || "??", anime.startDate?.year || "????"].join(".")
const animeEndDate = [anime.endDate?.day || "??", anime.endDate?.month || "??", anime.endDate?.year || "????"].join(".") const animeEndDate = [anime.endDate?.day || "??", anime.endDate?.month || "??", anime.endDate?.year || "????"].join(".")
const animeSeasonRaw = capitalizeFirstLetter(anime.season ?? "null") + " " + anime.startDate?.year const animeSeasonRaw = anime.season?.capitalizeFirstLetter() + " " + anime.startDate?.year
const animeSeason = anime.season ? animeSeasonRaw : "No season available" const animeSeason = anime.season ? animeSeasonRaw : "No season available"
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{
title: romaji + " | " + english, title: romaji + " | " + english,
url: anime.siteUrl || "", url: anime.siteUrl || "",
description: removeIndents(` description: `
**Description:** ${animeDescription} **Description:** ${animeDescription}
**Genres:** ${anime.genres.join(", ")} **Genres:** ${anime.genres.join(", ")}
@@ -76,7 +74,7 @@ export default {
**Season:** ${animeSeason} **Season:** ${animeSeason}
**Start Date:** ${animeStartDate} **Start Date:** ${animeStartDate}
**End Date:** ${animeEndDate} **End Date:** ${animeEndDate}
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: anime.coverImage?.medium || "" url: anime.coverImage?.medium || ""

View File

@@ -1,9 +1,8 @@
import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember, } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { admin, helper } from "config/roles.js" import { admin, helper } from "config/roles.js"
import { embedColor, devMessage } from "config/options.js" import { GuildMember, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
import { removeIndents } from "utils/functions/funcs.js"
export default { export default {
name: "ban", name: "ban",
@@ -36,7 +35,7 @@ export default {
{ name: "4 days", value: 4 }, { name: "4 days", value: 4 },
{ name: "5 days", value: 5 }, { name: "5 days", value: 5 },
{ name: "6 days", value: 6 }, { name: "6 days", value: 6 },
{ name: "7 days", value: 7 }, { name: "7 days", value: 7 }
) )
) )
.setDefaultMemberPermissions(PermissionFlagsBits.BanMembers) .setDefaultMemberPermissions(PermissionFlagsBits.BanMembers)
@@ -102,12 +101,12 @@ export default {
icon_url: mod.user.avatarURL() || undefined icon_url: mod.user.avatarURL() || undefined
}, },
title: "Member Banned", title: "Member Banned",
description: removeIndents(` description: `
**User:** ${userMention(member.user.id)} **User:** ${userMention(member.user.id)}
**Mod:** ${userMention(mod.user.id)} **Mod:** ${userMention(mod.user.id)}
**Reason:** ${reason} **Reason:** ${reason}
**Messages Deleted:** ${messageDeletionDays} days **Messages Deleted:** ${messageDeletionDays} days
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: mod.user.avatarURL() || "" url: mod.user.avatarURL() || ""
@@ -136,5 +135,5 @@ export default {
} }
}] }]
}) })
}, }
} as ICommand } as ICommand

View File

@@ -1,11 +1,10 @@
import { execSync } from "child_process"
import { devMessage, embedColor } from "config/options.js"
import { SlashCommandBuilder } from "discord.js" import { SlashCommandBuilder } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import { embedColor, devMessage } from "config/options.js" import { createRequire } from "node:module"
import os from "os" import os from "os"
import prettyMs from "pretty-ms" import prettyMs from "pretty-ms"
import { execSync } from "child_process"
import { removeIndents } from "utils/functions/funcs.js"
import { createRequire } from "node:module"
const require = createRequire(import.meta.url) const require = createRequire(import.meta.url)
const { dependencies, devDependencies } = require("../../package.json") const { dependencies, devDependencies } = require("../../package.json")
@@ -46,7 +45,7 @@ export default {
await interaction.reply({ await interaction.reply({
embeds: [{ embeds: [{
title: "Bot Info", title: "Bot Info",
description: removeIndents(` description: `
__**Bot**__ __**Bot**__
> **Name**: \`${client.user!.username}\` > **Name**: \`${client.user!.username}\`
> **ID**: \`${client.user!.id}\` > **ID**: \`${client.user!.id}\`
@@ -56,8 +55,8 @@ export default {
__**Project**__ __**Project**__
> **Node Version:** \`${process.version}\` > **Node Version:** \`${process.version}\`
> **Typescript Version:** \`${(castedDevDeps.typescript).replace("^", "")}\` > **Typescript Version:** \`${castedDevDeps.typescript.replace("^", "")}\`
> **Discord.js Version:** \`${(castedDeps["discord.js"]).replace("^", "")}\` > **Discord.js Version:** \`${castedDeps["discord.js"].replace("^", "")}\`
> **Dependencies (${Object.keys(castedDeps).length}):** \`${deps}\` > **Dependencies (${Object.keys(castedDeps).length}):** \`${deps}\`
> **Dev Dependencies (${Object.keys(castedDevDeps).length}):** \`${devDeps}\` > **Dev Dependencies (${Object.keys(castedDevDeps).length}):** \`${devDeps}\`
> **Uptime:** \`${prettyMs(client.uptime!, { verbose: true })}\` > **Uptime:** \`${prettyMs(client.uptime!, { verbose: true })}\`
@@ -67,15 +66,15 @@ export default {
> **Channels:** \`${client.channels.cache.size}\` > **Channels:** \`${client.channels.cache.size}\`
> **Users:** \`${client.users.cache.size}\` > **Users:** \`${client.users.cache.size}\`
> **Roles:** \`${client.guilds.cache.reduce((a, b) => a + b.roles.cache.size, 0)}\` > **Roles:** \`${client.guilds.cache.reduce((a, b) => a + b.roles.cache.size, 0)}\`
`), `.removeIndents(),
thumbnail: { thumbnail: {
url: client.user!.avatarURL() || "", url: client.user!.avatarURL() || ""
}, },
color: embedColor, color: embedColor,
footer: { footer: {
text: interaction.guild!.name + " | " + devMessage, text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL() || undefined, icon_url: interaction.guild!.iconURL() || undefined
}, }
}] }]
}) })
} }

View File

@@ -1,8 +1,8 @@
import { devMessage, embedColor } from "config/options.js"
import { bwfkdr, bwstars, bwwins, duelswins, duelswlr, swkdr, swstars } from "config/reqs.js"
import { SlashCommandBuilder } from "discord.js" import { SlashCommandBuilder } from "discord.js"
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" import { ICommand } from "interfaces"
import { bedwarsLevel, getGuild, getHeadURL, getPlayer, getUUID, hypixelLevel, skywarsLevel } from "utils/Hypixel.js"
export default { export default {
name: "check", name: "check",
@@ -202,7 +202,7 @@ export default {
" / " + duelswins.toString() + "`\n" + " / " + duelswins.toString() + "`\n" +
"**➺ WLR:** `" + hsduelswlr.toFixed(2).toString() + "**➺ WLR:** `" + hsduelswlr.toFixed(2).toString() +
" / " + duelswlr.toString() + "`\n" + " / " + duelswlr.toString() + "`\n" +
"**➺ KDR:** `" + hsduelskd.toFixed(2).toString() + "`", "**➺ KDR:** `" + hsduelskd.toFixed(2).toString() + "`"
}) })
} else { } else {
statsFields.push({ statsFields.push({

View File

@@ -1,8 +1,7 @@
import { SlashCommandBuilder, PermissionFlagsBits, TextChannel, channelMention, userMention } from "discord.js"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import { channelMention, PermissionFlagsBits, SlashCommandBuilder, TextChannel, userMention } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
import { removeIndents } from "utils/functions/funcs.js"
export default { export default {
name: "clear", name: "clear",
@@ -53,11 +52,11 @@ export default {
icon_url: interaction.user.avatarURL() || undefined icon_url: interaction.user.avatarURL() || undefined
}, },
title: "Messages Cleared", title: "Messages Cleared",
description: removeIndents(` description: `
**Channel:** ${channelMention(channel.id)} **Channel:** ${channelMention(channel.id)}
**Amount:** \`${messages.size}\` messages **Amount:** \`${messages.size}\` messages
**Mod:** ${userMention(interaction.user.id)} **Mod:** ${userMention(interaction.user.id)}
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: interaction.user.avatarURL() || "" url: interaction.user.avatarURL() || ""

View File

@@ -1,5 +1,5 @@
import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import settings from "schemas/settingsTag.js" import settings from "schemas/settingsTag.js"

View File

@@ -1,5 +1,5 @@
import { devMessage, embedColor } from "config/options.js"
import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js" import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js"
import { embedColor, devMessage } from "config/options.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import ban from "./counting/ban.js" import ban from "./counting/ban.js"
import unban from "./counting/unban.js" import unban from "./counting/unban.js"

View File

@@ -1,6 +1,6 @@
import { ChatInputCommandInteraction, GuildMember, userMention } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { countingBanned } from "config/roles.js" import { countingBanned } from "config/roles.js"
import { embedColor, devMessage } from "config/options.js" import { ChatInputCommandInteraction, GuildMember, userMention } from "discord.js"
export default async function ban(interaction: ChatInputCommandInteraction): Promise<void> { export default async function ban(interaction: ChatInputCommandInteraction): Promise<void> {
const member = interaction.options.getMember("user")! as GuildMember const member = interaction.options.getMember("user")! as GuildMember

View File

@@ -1,6 +1,6 @@
import { ChatInputCommandInteraction, GuildMember, userMention } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { countingBanned } from "config/roles.js" import { countingBanned } from "config/roles.js"
import { embedColor, devMessage } from "config/options.js" import { ChatInputCommandInteraction, GuildMember, userMention } from "discord.js"
export default async function ban(interaction: ChatInputCommandInteraction): Promise<void> { export default async function ban(interaction: ChatInputCommandInteraction): Promise<void> {
const member = interaction.options.getMember("user")! as GuildMember const member = interaction.options.getMember("user")! as GuildMember

View File

@@ -1,11 +1,10 @@
import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js" import { GuildMember, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import verify from "schemas/verifyTag.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import roleManage from "utils/functions/rolesmanage.js" import verify from "schemas/verifyTag.js"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
import roleManage from "utils/functions/rolesmanage.js"
import { getIGN } from "utils/Hypixel.js" import { getIGN } from "utils/Hypixel.js"
import { removeIndents } from "utils/functions/funcs.js"
export default { export default {
name: "forceunverify", name: "forceunverify",
@@ -58,12 +57,12 @@ export default {
name: mod.username, name: mod.username,
icon_url: mod.avatarURL() || undefined icon_url: mod.avatarURL() || undefined
}, },
description: removeIndents(` description: `
**User:** ${userMention(member.user.id)} **User:** ${userMention(member.user.id)}
**Mod:** ${userMention(mod.id)} **Mod:** ${userMention(mod.id)}
**IGN:** \`${ign}\` **IGN:** \`${ign}\`
**UUID:** \`${uuid}\` **UUID:** \`${uuid}\`
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: mod.avatarURL() || "" url: mod.avatarURL() || ""

View File

@@ -1,11 +1,10 @@
import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" import { devMessage, embedColor, hypixelGuildID } from "config/options.js"
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.js"
import { waitingListRole } from "config/roles.js" import { waitingListRole } from "config/roles.js"
import { removeIndents } from "utils/functions/funcs.js" import { GuildMember, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import { ICommand } from "interfaces"
import verify from "schemas/verifyTag.js"
import roleManage from "utils/functions/rolesmanage.js"
import { getGuild, getHeadURL, getIGN } from "utils/Hypixel.js"
export default { export default {
name: "forceupdate", name: "forceupdate",
@@ -85,11 +84,11 @@ export default {
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{
description: removeIndents(` description: `
${usermentioned} was given the \`Default Member\` role. ${usermentioned} was given the \`Default Member\` role.
IGN: \`${ign}\` IGN: \`${ign}\`
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: head! url: head!
@@ -159,11 +158,11 @@ export default {
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{
description: removeIndents(` description: `
${usermentioned} was given the \`${replyRank}\` role. ${usermentioned} was given the \`${replyRank}\` role.
IGN: \`${ign}\` IGN: \`${ign}\`
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: head! url: head!

View File

@@ -1,11 +1,10 @@
import { SlashCommandBuilder, PermissionFlagsBits, GuildMember, userMention } from "discord.js" import { devMessage, embedColor, hypixelGuildID } from "config/options.js"
import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js" import { GuildMember, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.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 { ICommand } from "interfaces"
import verify from "schemas/verifyTag.js"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
import { removeIndents } from "utils/functions/funcs.js" import roleManage from "utils/functions/rolesmanage.js"
import { getGuild, getHeadURL, getPlayer, getUUID } from "utils/Hypixel.js"
export default { export default {
name: "forceverify", name: "forceverify",
@@ -43,8 +42,10 @@ export default {
} }
if (!user) { if (!user) {
interaction.editReply("Please provide a user to force verify.\n" + interaction.editReply(
"This can also mean the user is not in the server.") "Please provide a user to force verify.\n" +
"This can also mean the user is not in the server."
)
return return
} }
@@ -161,7 +162,7 @@ export default {
await verify.create({ await verify.create({
userID: user.user.id, userID: user.user.id,
uuid: uuid, uuid: uuid
}) })
await logToChannel("mod", { await logToChannel("mod", {
@@ -171,12 +172,12 @@ export default {
icon_url: mod.avatarURL() || undefined icon_url: mod.avatarURL() || undefined
}, },
title: "Force Verified", title: "Force Verified",
description: removeIndents(` description: `
**User:** ${userMention(user.id)} **User:** ${userMention(user.id)}
**Mod:** ${userMention(mod.id)} **Mod:** ${userMention(mod.id)}
**IGN:** \`${player.displayname}\` **IGN:** \`${player.displayname}\`
**UUID:** \`${uuid}\` **UUID:** \`${uuid}\`
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: mod.avatarURL() || "" url: mod.avatarURL() || ""

View File

@@ -1,8 +1,8 @@
import { devMessage, embedColor } from "config/options.js"
import { SlashCommandBuilder } from "discord.js" import { SlashCommandBuilder } from "discord.js"
import { embedColor, devMessage } from "config/options.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import guildMember from "./guild/member.js"
import guildInfo from "./guild/info.js" import guildInfo from "./guild/info.js"
import guildMember from "./guild/member.js"
import guildTop from "./guild/top.js" import guildTop from "./guild/top.js"
export default { export default {

View File

@@ -1,7 +1,7 @@
import { getUUID, getIGN, getPlayer, getGuild, guildLevel } from "utils/Hypixel.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js"
import { ChatInputCommandInteraction } from "discord.js" import { ChatInputCommandInteraction } from "discord.js"
import { IGuildData } from "interfaces" import { IGuildData } from "interfaces"
import { getGuild, getIGN, getPlayer, getUUID, guildLevel } from "utils/Hypixel.js"
export default async function guildInfo(interaction: ChatInputCommandInteraction): Promise<void> { export default async function guildInfo(interaction: ChatInputCommandInteraction): Promise<void> {
await interaction.deferReply() await interaction.deferReply()
@@ -118,8 +118,7 @@ export default async function guildInfo(interaction: ChatInputCommandInteraction
const guildCreatedMinute = guildCreated.getMinutes() const guildCreatedMinute = guildCreated.getMinutes()
const guildCreatedSecond = guildCreated.getSeconds() const guildCreatedSecond = guildCreated.getSeconds()
const guildCreatedTime = const guildCreatedTime = guildCreatedDate + "." +
guildCreatedDate + "." +
guildCreatedMonth + "." + guildCreatedMonth + "." +
guildCreatedYear + " " + guildCreatedYear + " " +
guildCreatedHour + ":" + guildCreatedHour + ":" +
@@ -132,7 +131,9 @@ export default async function guildInfo(interaction: ChatInputCommandInteraction
const guildRanks = guildRanksUnsorted.map(r => "**➺ " + r.name + "** `[" + r.tag + "]`").join("\n") const guildRanks = guildRanksUnsorted.map(r => "**➺ " + r.name + "** `[" + r.tag + "]`").join("\n")
const allGuildMembersWeeklyXP = guildMembers.map(member => member.expHistory) const allGuildMembersWeeklyXP = guildMembers.map(member => member.expHistory)
const guildMembersWeeklyXP = allGuildMembersWeeklyXP.map(member => { return Object.values(member).reduce((a, b) => a + b, 0) }) const guildMembersWeeklyXP = allGuildMembersWeeklyXP.map(member => {
return Object.values(member).reduce((a, b) => a + b, 0)
})
const totalGuildMembersWeeklyXPUnformatted = guildMembersWeeklyXP.reduce((a, b) => a + b, 0) const totalGuildMembersWeeklyXPUnformatted = guildMembersWeeklyXP.reduce((a, b) => a + b, 0)
const totalGuildMembersWeeklyXP = new Intl.NumberFormat("en-US").format(totalGuildMembersWeeklyXPUnformatted) const totalGuildMembersWeeklyXP = new Intl.NumberFormat("en-US").format(totalGuildMembersWeeklyXPUnformatted)

View File

@@ -1,6 +1,6 @@
import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js"
import { ChatInputCommandInteraction } from "discord.js" import { ChatInputCommandInteraction } from "discord.js"
import { getGuild, getHeadURL, getPlayer, getUUID } from "utils/Hypixel.js"
export default async function guildMember(interaction: ChatInputCommandInteraction): Promise<void> { export default async function guildMember(interaction: ChatInputCommandInteraction): Promise<void> {
await interaction.deferReply() await interaction.deferReply()
@@ -118,8 +118,7 @@ export default async function guildMember(interaction: ChatInputCommandInteracti
const guildMemberJoinMinutes = guildMemberJoinTime.getMinutes() const guildMemberJoinMinutes = guildMemberJoinTime.getMinutes()
const guildMemberJoinSeconds = guildMemberJoinTime.getSeconds() const guildMemberJoinSeconds = guildMemberJoinTime.getSeconds()
const guildMemberJoin = const guildMemberJoin = guildMemberJoinDate + "." +
guildMemberJoinDate + "." +
guildMemberJoinMonth + "." + guildMemberJoinMonth + "." +
guildMemberJoinYear + " " + guildMemberJoinYear + " " +
guildMemberJoinHours + ":" + guildMemberJoinHours + ":" +

View File

@@ -1,7 +1,7 @@
import { getUUID, getPlayer, getGuild, getIGN } from "utils/Hypixel.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js"
import { ChannelType, ChatInputCommandInteraction } from "discord.js" import { ChannelType, ChatInputCommandInteraction } from "discord.js"
import { IGuildData } from "interfaces" import { IGuildData } from "interfaces"
import { getGuild, getIGN, getPlayer, getUUID } from "utils/Hypixel.js"
import { redis } from "utils/Illegitimate.js" import { redis } from "utils/Illegitimate.js"
export default async function guildTop(interaction: ChatInputCommandInteraction): Promise<void> { export default async function guildTop(interaction: ChatInputCommandInteraction): Promise<void> {
@@ -143,8 +143,8 @@ export default async function guildTop(interaction: ChatInputCommandInteraction)
amount = 1 amount = 1
} }
type GuildTopData = { ign: string; uuid: string }[] type GuildTopData = { ign: string, uuid: string }[]
type NewList = { name: string; value: string; inline: boolean }[] type NewList = { name: string, value: string, inline: boolean }[]
let cacheStatus: boolean let cacheStatus: boolean
let guildData: GuildTopData = [] let guildData: GuildTopData = []

View File

@@ -1,5 +1,5 @@
import { devMessage, embedColor } from "config/options.js"
import { SlashCommandBuilder } from "discord.js" import { SlashCommandBuilder } from "discord.js"
import { embedColor, devMessage } from "config/options.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
export default { export default {

View File

@@ -1,7 +1,6 @@
import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js" import { devMessage, embedColor, instructionsgif } from "config/options.js"
import { embedColor, devMessage, instructionsgif } from "config/options.js" import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import { removeIndents } from "utils/functions/funcs.js"
export default { export default {
name: "instructions", name: "instructions",
@@ -19,14 +18,14 @@ export default {
await interaction.reply({ await interaction.reply({
embeds: [{ embeds: [{
title: "Verification", title: "Verification",
description: removeIndents(` description: `
- Log onto hypixel. - Log onto hypixel.
- Right click with the head in your hotbar. - Right click with the head in your hotbar.
- Click on the social media icon. - Click on the social media icon.
- Click on the discord icon. - Click on the discord icon.
- Type your username in the chat and press enter. - Type your username in the chat and press enter.
- Run the \`/verify\` command in this channel. - Run the \`/verify\` command in this channel.
`), `.removeIndents(),
thumbnail: { thumbnail: {
url: interaction.guild?.iconURL() || "" url: interaction.guild?.iconURL() || ""
}, },
@@ -36,7 +35,7 @@ export default {
icon_url: interaction.guild!.iconURL() || undefined icon_url: interaction.guild!.iconURL() || undefined
}, },
image: { image: {
url: instructionsgif, url: instructionsgif
} }
}] }]
}) })

View File

@@ -1,9 +1,8 @@
import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { admin, helper } from "config/roles.js" import { admin, helper } from "config/roles.js"
import { embedColor, devMessage } from "config/options.js" import { GuildMember, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
import { removeIndents } from "utils/functions/funcs.js"
export default { export default {
name: "kick", name: "kick",
@@ -76,11 +75,11 @@ export default {
icon_url: mod.user.avatarURL() || undefined icon_url: mod.user.avatarURL() || undefined
}, },
title: "Member Kicked", title: "Member Kicked",
description: removeIndents(` description: `
**User:** ${userMention(member.user.id)} **User:** ${userMention(member.user.id)}
**Mod:** ${userMention(mod.user.id)} **Mod:** ${userMention(mod.user.id)}
**Reason:** ${reason} **Reason:** ${reason}
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: mod.user.avatarURL() || "" url: mod.user.avatarURL() || ""

View File

@@ -1,13 +1,13 @@
import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js" import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import play from "./music/play.js"
import leave from "./music/leave.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 nowplaying from "./music/nowplaying.js"
import pause from "./music/pause.js" import pause from "./music/pause.js"
import play from "./music/play.js"
import queue from "./music/queue.js"
import skip from "./music/skip.js"
import unpause from "./music/unpause.js" import unpause from "./music/unpause.js"
import volume from "./music/volume.js"
export default { export default {
name: "music", name: "music",
@@ -28,7 +28,9 @@ export default {
.setName("query") .setName("query")
.setDescription("The song to play") .setDescription("The song to play")
.setAutocomplete(true) .setAutocomplete(true)
.setRequired(true))) .setRequired(true)
)
)
.addSubcommand(subcommand => .addSubcommand(subcommand =>
subcommand subcommand
.setName("volume") .setName("volume")
@@ -39,7 +41,9 @@ export default {
.setDescription("The volume to set") .setDescription("The volume to set")
.setMinValue(1) .setMinValue(1)
.setMaxValue(100) .setMaxValue(100)
.setRequired(true))) .setRequired(true)
)
)
.addSubcommand(subcommand => .addSubcommand(subcommand =>
subcommand subcommand
.setName("skip") .setName("skip")
@@ -47,27 +51,34 @@ export default {
.addNumberOption(option => .addNumberOption(option =>
option option
.setName("amount") .setName("amount")
.setDescription("The amount of songs to skip"))) .setDescription("The amount of songs to skip")
)
)
.addSubcommand(subcommand => .addSubcommand(subcommand =>
subcommand subcommand
.setName("queue") .setName("queue")
.setDescription("Show the queue")) .setDescription("Show the queue")
)
.addSubcommand(subcommand => .addSubcommand(subcommand =>
subcommand subcommand
.setName("nowplaying") .setName("nowplaying")
.setDescription("Show the currently playing song")) .setDescription("Show the currently playing song")
)
.addSubcommand(subcommand => .addSubcommand(subcommand =>
subcommand subcommand
.setName("pause") .setName("pause")
.setDescription("Pause the music")) .setDescription("Pause the music")
)
.addSubcommand(subcommand => .addSubcommand(subcommand =>
subcommand subcommand
.setName("unpause") .setName("unpause")
.setDescription("Unpause the music")) .setDescription("Unpause the music")
)
.addSubcommand(subcommand => .addSubcommand(subcommand =>
subcommand subcommand
.setName("leave") .setName("leave")
.setDescription("Leave the voice channel")) .setDescription("Leave the voice channel")
)
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator), .setDefaultMemberPermissions(PermissionFlagsBits.Administrator),
@@ -114,4 +125,4 @@ export default {
return return
} }
} }
} as ICommand } as ICommand

View File

@@ -22,4 +22,4 @@ export default async function leave(interaction: ChatInputCommandInteraction) {
color: embedColor color: embedColor
}] }]
}) })
} }

View File

@@ -1,7 +1,6 @@
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import { useMainPlayer } from "discord-player" import { useMainPlayer } from "discord-player"
import { ChatInputCommandInteraction } from "discord.js" import { ChatInputCommandInteraction } from "discord.js"
import { removeIndents } from "utils/functions/funcs.js"
export default async function nowplaying(interaction: ChatInputCommandInteraction) { export default async function nowplaying(interaction: ChatInputCommandInteraction) {
await interaction.deferReply() await interaction.deferReply()
@@ -42,11 +41,11 @@ export default async function nowplaying(interaction: ChatInputCommandInteractio
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{
title: "Now Playing", title: "Now Playing",
description: removeIndents(` description: `
[${current.title}](${current.url}) [${current.title}](${current.url})
${progressBar} ${progressBar}
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: current.thumbnail url: current.thumbnail
@@ -56,4 +55,4 @@ export default async function nowplaying(interaction: ChatInputCommandInteractio
} }
}] }]
}) })
} }

View File

@@ -35,4 +35,4 @@ export default async function pause(interaction: ChatInputCommandInteraction) {
color: embedColor color: embedColor
}] }]
}) })
} }

View File

@@ -23,7 +23,7 @@ export default async function play(interaction: ChatInputCommandInteraction) {
const { track } = await player.play(channel, query, { const { track } = await player.play(channel, query, {
requestedBy: interaction.user, requestedBy: interaction.user,
nodeOptions: { nodeOptions: {
volume: 25, volume: 25
} }
}) })
@@ -40,4 +40,4 @@ export default async function play(interaction: ChatInputCommandInteraction) {
} }
}] }]
}) })
} }

View File

@@ -36,4 +36,4 @@ export default async function queue(interaction: ChatInputCommandInteraction) {
} }
}] }]
}) })
} }

View File

@@ -41,4 +41,4 @@ export default async function skip(interaction: ChatInputCommandInteraction) {
color: embedColor color: embedColor
}] }]
}) })
} }

View File

@@ -35,4 +35,4 @@ export default async function pause(interaction: ChatInputCommandInteraction) {
color: embedColor color: embedColor
}] }]
}) })
} }

View File

@@ -26,4 +26,4 @@ export default async function volume(interaction: ChatInputCommandInteraction) {
color: embedColor color: embedColor
}] }]
}) })
} }

View File

@@ -1,5 +1,5 @@
import { devMessage, embedColor } from "config/options.js"
import { SlashCommandBuilder } from "discord.js" import { SlashCommandBuilder } from "discord.js"
import { embedColor, devMessage } from "config/options.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
export default { export default {

View File

@@ -1,5 +1,5 @@
import { SlashCommandBuilder, User } from "discord.js"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import { SlashCommandBuilder, User } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import env from "utils/Env.js" import env from "utils/Env.js"

View File

@@ -1,10 +1,9 @@
import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js"
import waitinglist from "schemas/waitinglistTag.js"
import { ICommand } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js"
import { waitingListRole } from "config/roles.js" import { waitingListRole } from "config/roles.js"
import { removeIndents } from "utils/functions/funcs.js" import { GuildMember, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import { ICommand } from "interfaces"
import waitinglist from "schemas/waitinglistTag.js"
import logToChannel from "utils/functions/logtochannel.js"
export default { export default {
name: "remove", name: "remove",
@@ -58,11 +57,11 @@ export default {
icon_url: mod.avatarURL() || undefined icon_url: mod.avatarURL() || undefined
}, },
title: "Waiting List - Remove User", title: "Waiting List - Remove User",
description: removeIndents(` description: `
**User:** ${userMention(member.user.id)} **User:** ${userMention(member.user.id)}
**Reason:** ${reason} **Reason:** ${reason}
**Mod:** ${userMention(mod.id)} **Mod:** ${userMention(mod.id)}
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: mod.avatarURL() || "" url: mod.avatarURL() || ""

View File

@@ -1,6 +1,6 @@
import { devMessage, embedColor } from "config/options.js"
import { bwfkdr, bwstars, bwwins, duelswins, duelswlr, swkdr, swstars } from "config/reqs.js"
import { SlashCommandBuilder } from "discord.js" import { SlashCommandBuilder } from "discord.js"
import { embedColor, devMessage } from "config/options.js"
import { bwfkdr, bwstars, bwwins, swstars, swkdr, duelswins, duelswlr } from "config/reqs.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
export default { export default {

View File

@@ -1,5 +1,5 @@
import { SlashCommandBuilder, PermissionFlagsBits, ChannelType, TextChannel } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js" import { ChannelType, PermissionFlagsBits, SlashCommandBuilder, TextChannel } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
export default { export default {

View File

@@ -1,8 +1,7 @@
import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js" import { GuildMember, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
import { removeIndents } from "utils/functions/funcs.js"
export default { export default {
name: "setnick", name: "setnick",
@@ -49,11 +48,11 @@ export default {
icon_url: interaction.user.avatarURL() || undefined icon_url: interaction.user.avatarURL() || undefined
}, },
title: "Nickname", title: "Nickname",
description: removeIndents(` description: `
**User:** ${userMention(member.id)} **User:** ${userMention(member.id)}
**Nickname:** ${nickname} **Nickname:** ${nickname}
**Moderator:** ${userMention(interaction.user.id)} **Moderator:** ${userMention(interaction.user.id)}
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: interaction.user.avatarURL() || "" url: interaction.user.avatarURL() || ""

View File

@@ -1,5 +1,5 @@
import { SlashCommandBuilder, PermissionFlagsBits, ButtonBuilder, ActionRowBuilder, ButtonStyle, ChannelType, TextChannel } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle, ChannelType, PermissionFlagsBits, SlashCommandBuilder, TextChannel } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
export default { export default {

View File

@@ -1,8 +1,7 @@
import { SlashCommandBuilder, PermissionFlagsBits, ChannelType, TextChannel, channelMention, userMention } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js" import { channelMention, ChannelType, PermissionFlagsBits, SlashCommandBuilder, TextChannel, userMention } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
import { removeIndents } from "utils/functions/funcs.js"
export default { export default {
name: "slowmode", name: "slowmode",
@@ -55,11 +54,11 @@ export default {
icon_url: interaction.user.avatarURL() || undefined icon_url: interaction.user.avatarURL() || undefined
}, },
title: "Slowmode Update", title: "Slowmode Update",
description: removeIndents(` description: `
**Channel:** ${channelMention(channel.id)} **Channel:** ${channelMention(channel.id)}
**Slowmode:** ${seconds} seconds **Slowmode:** ${seconds} seconds
**Mod:** ${userMention(interaction.user.id)} **Mod:** ${userMention(interaction.user.id)}
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: interaction.user.avatarURL() || "" url: interaction.user.avatarURL() || ""

View File

@@ -1,11 +1,11 @@
import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js" import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import help from "./staff/help.js"
import beast from "./staff/beast.js" import beast from "./staff/beast.js"
import updateAll from "./staff/updateall.js" import help from "./staff/help.js"
import prune from "./staff/prune.js" import prune from "./staff/prune.js"
import removeGuildRoles from "./staff/removeguildroles.js" import removeGuildRoles from "./staff/removeguildroles.js"
import updateAll from "./staff/updateall.js"
export default { export default {
name: "staff", name: "staff",

View File

@@ -1,7 +1,7 @@
import { bwwins, beastbwfkdr, beastbwstars, beastswkdr, beastswstars, beastduelswins, duelswlr } from "config/reqs.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js" import { beastbwfkdr, beastbwstars, beastduelswins, beastswkdr, beastswstars, bwwins, duelswlr } from "config/reqs.js"
import { hypixelLevel, bedwarsLevel, skywarsLevel, getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js"
import { ChatInputCommandInteraction } from "discord.js" import { ChatInputCommandInteraction } from "discord.js"
import { bedwarsLevel, getGuild, getHeadURL, getPlayer, getUUID, hypixelLevel, skywarsLevel } from "utils/Hypixel.js"
export default async function beast(interaction: ChatInputCommandInteraction): Promise<void> { export default async function beast(interaction: ChatInputCommandInteraction): Promise<void> {
await interaction.deferReply() await interaction.deferReply()

View File

@@ -1,5 +1,5 @@
import { devMessage, embedColor } from "config/options.js"
import { ChatInputCommandInteraction } from "discord.js" import { ChatInputCommandInteraction } from "discord.js"
import { embedColor, devMessage } from "config/options.js"
import { ExtendedClient as Client } from "utils/Client.js" import { ExtendedClient as Client } from "utils/Client.js"
export default async function help(interaction: ChatInputCommandInteraction, client: Client): Promise<void> { export default async function help(interaction: ChatInputCommandInteraction, client: Client): Promise<void> {

View File

@@ -1,5 +1,5 @@
import { devMessage, embedColor } from "config/options.js"
import { ActionRowBuilder, ButtonBuilder, ButtonInteraction, ButtonStyle, ChatInputCommandInteraction, ComponentType } from "discord.js" import { ActionRowBuilder, ButtonBuilder, ButtonInteraction, ButtonStyle, ChatInputCommandInteraction, ComponentType } from "discord.js"
import { embedColor, devMessage } from "config/options.js"
import env from "utils/Env.js" import env from "utils/Env.js"
export default async function prune(interaction: ChatInputCommandInteraction): Promise<void> { export default async function prune(interaction: ChatInputCommandInteraction): Promise<void> {
@@ -89,7 +89,7 @@ export default async function prune(interaction: ChatInputCommandInteraction): P
embeds: [{ embeds: [{
description: "Cancelled", description: "Cancelled",
color: embedColor color: embedColor
}], }]
}).then(() => { }).then(() => {
collector.stop() collector.stop()
}) })
@@ -104,13 +104,13 @@ export default async function prune(interaction: ChatInputCommandInteraction): P
} }
await m.edit({ await m.edit({
components: [], components: []
}) })
await i.editReply({ await i.editReply({
embeds: [{ embeds: [{
description: "Pruned all the members", description: "Pruned all the members",
color: embedColor color: embedColor
}], }]
}).then(() => { }).then(() => {
collector.stop() collector.stop()
}) })

View File

@@ -1,10 +1,10 @@
import { embedColor, hypixelGuildID } from "config/options.js" import { embedColor, hypixelGuildID } from "config/options.js"
import { ChatInputCommandInteraction, GuildMember } from "discord.js" import { ChatInputCommandInteraction, GuildMember } from "discord.js"
import verify from "schemas/verifyTag.js"
import { IGuildData } from "interfaces" import { IGuildData } from "interfaces"
import verify from "schemas/verifyTag.js"
import env from "utils/Env.js" import env from "utils/Env.js"
import { getGuild } from "utils/Hypixel.js"
import roleManage from "utils/functions/rolesmanage.js" import roleManage from "utils/functions/rolesmanage.js"
import { getGuild } from "utils/Hypixel.js"
export default async function removeGuildRoles(interaction: ChatInputCommandInteraction): Promise<void> { export default async function removeGuildRoles(interaction: ChatInputCommandInteraction): Promise<void> {
await interaction.deferReply() await interaction.deferReply()
@@ -22,12 +22,13 @@ export default async function removeGuildRoles(interaction: ChatInputCommandInte
} }
const guildMembers = await interaction.guild!.members.fetch().then( const guildMembers = await interaction.guild!.members.fetch().then(
members => members.map(member => { members =>
return { members.map(member => {
id: member.id, return {
member: member id: member.id,
} member: member
}) }
})
) )
const guildData = (await getGuild(hypixelGuildID, "id")) as IGuildData const guildData = (await getGuild(hypixelGuildID, "id")) as IGuildData

View File

@@ -1,11 +1,11 @@
import verify from "schemas/verifyTag.js"
import { embedColor, hypixelGuildID } from "config/options.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 { ChatInputCommandInteraction, GuildMember } from "discord.js"
import env from "utils/Env.js"
import { getGuild, getIGN } from "utils/Hypixel.js"
import { IGuildData } from "interfaces" import { IGuildData } from "interfaces"
import verify from "schemas/verifyTag.js"
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"
export default async function updateAll(interaction: ChatInputCommandInteraction): Promise<void> { export default async function updateAll(interaction: ChatInputCommandInteraction): Promise<void> {
await interaction.deferReply() await interaction.deferReply()
@@ -23,12 +23,13 @@ export default async function updateAll(interaction: ChatInputCommandInteraction
} }
const guildMembers = await interaction.guild!.members.fetch().then( const guildMembers = await interaction.guild!.members.fetch().then(
members => members.map(member => { members =>
return { members.map(member => {
id: member.id, return {
member: member id: member.id,
} member: member
}) }
})
) )
const guildData = (await getGuild(hypixelGuildID, "id")) as IGuildData const guildData = (await getGuild(hypixelGuildID, "id")) as IGuildData

View File

@@ -1,10 +1,9 @@
import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js" import { GuildMember, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import ms from "ms" import ms from "ms"
import prettyMs from "pretty-ms" import prettyMs from "pretty-ms"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
import { removeIndents } from "utils/functions/funcs.js"
export default { export default {
name: "timeout", name: "timeout",
@@ -144,12 +143,12 @@ export default {
icon_url: mod.user.avatarURL() || undefined icon_url: mod.user.avatarURL() || undefined
}, },
title: title, title: title,
description: removeIndents(` description: `
**User:** ${userMention(target.id)} **User:** ${userMention(target.id)}
${timeouttime === null ? "**Time:** `None`" : "**Time:** `" + prettyTime + "`"} ${timeouttime === null ? "**Time:** `None`" : "**Time:** `" + prettyTime + "`"}
**Reason:** \`${reason}\` **Reason:** \`${reason}\`
**Mod:** ${userMention(mod.id)} **Mod:** ${userMention(mod.id)}
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: mod.user.avatarURL() || "" url: mod.user.avatarURL() || ""

View File

@@ -1,8 +1,7 @@
import { SlashCommandBuilder, PermissionFlagsBits, userMention, User } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { embedColor, devMessage } from "config/options.js" import { PermissionFlagsBits, SlashCommandBuilder, User, userMention } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
import { removeIndents } from "utils/functions/funcs.js"
export default { export default {
name: "unban", name: "unban",
@@ -69,11 +68,11 @@ export default {
icon_url: mod.avatarURL() || undefined icon_url: mod.avatarURL() || undefined
}, },
title: "Member Unbanned", title: "Member Unbanned",
description: removeIndents(` description: `
**User:** ${userMention(user!.id)} **User:** ${userMention(user!.id)}
**Mod:** ${userMention(mod.id)} **Mod:** ${userMention(mod.id)}
**Reason:** ${reason} **Reason:** ${reason}
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: mod.avatarURL() || "" url: mod.avatarURL() || ""

View File

@@ -1,11 +1,10 @@
import { GuildMember, SlashCommandBuilder } from "discord.js" import { devMessage, embedColor, hypixelGuildID } from "config/options.js"
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.js" import { waitingListRole } from "config/roles.js"
import { removeIndents } from "utils/functions/funcs.js" import { GuildMember, SlashCommandBuilder } from "discord.js"
import { ICommand } from "interfaces"
import verify from "schemas/verifyTag.js"
import roleManage from "utils/functions/rolesmanage.js"
import { getGuild, getHeadURL, getIGN } from "utils/Hypixel.js"
export default { export default {
name: "update", name: "update",
@@ -68,11 +67,11 @@ export default {
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{
description: removeIndents(` description: `
Updated your roles to \`Default Member\` Updated your roles to \`Default Member\`
IGN: \`${ign}\` IGN: \`${ign}\`
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: head! url: head!
@@ -143,11 +142,11 @@ export default {
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{
description: removeIndents(` description: `
Updated your roles to \`${replyRank}\` Updated your roles to \`${replyRank}\`
IGN: \`${ign}\` IGN: \`${ign}\`
`), `.removeIndents(),
color: embedColor, color: embedColor,
thumbnail: { thumbnail: {
url: head! url: head!

View File

@@ -1,7 +1,7 @@
import { devMessage, embedColor } from "config/options.js"
import { SlashCommandBuilder } from "discord.js" import { SlashCommandBuilder } from "discord.js"
import { embedColor, devMessage } from "config/options.js"
import { getUUID, getIGN, getHeadURL, formatUuid } from "utils/Hypixel.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import { formatUuid, getHeadURL, getIGN, getUUID } from "utils/Hypixel.js"
export default { export default {
name: "uuid", name: "uuid",

View File

@@ -1,11 +1,11 @@
import { devMessage, embedColor, hypixelGuildID } from "config/options.js"
import { GuildMember, SlashCommandBuilder } from "discord.js" import { GuildMember, SlashCommandBuilder } from "discord.js"
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 { ICommand } from "interfaces"
import verify from "schemas/verifyTag.js"
import { IPlayerData } from "interfaces" import { IPlayerData } from "interfaces"
import { IGuildData } from "interfaces" import { IGuildData } from "interfaces"
import verify from "schemas/verifyTag.js"
import roleManage from "utils/functions/rolesmanage.js"
import { getGuild, getHeadURL, getPlayer, getUUID } from "utils/Hypixel.js"
export default { export default {
name: "verify", name: "verify",
@@ -114,7 +114,8 @@ export default {
if (linkedDiscord !== username) { if (linkedDiscord !== username) {
interaction.editReply({ interaction.editReply({
embeds: [{ embeds: [{
description: "<a:cross_a:1087808606897983539> The Discord account linked to `" + player.displayname + "` is currently `" + linkedDiscord + "`\n\n" + description: "<a:cross_a:1087808606897983539> The Discord account linked to `" +
player.displayname + "` is currently `" + linkedDiscord + "`\n\n" +
"**Please set your Discord tag on hypixel to `" + username + "` and try again.**", "**Please set your Discord tag on hypixel to `" + username + "` and try again.**",
color: embedColor color: embedColor
}] }]

View File

@@ -1,8 +1,8 @@
import { devMessage, embedColor } from "config/options.js"
import { SlashCommandBuilder, userMention } from "discord.js" import { SlashCommandBuilder, userMention } from "discord.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import { embedColor, devMessage } from "config/options.js"
import verify from "schemas/verifyTag.js" import verify from "schemas/verifyTag.js"
import { getIGN, getHeadURL } from "utils/Hypixel.js" import { getHeadURL, getIGN } from "utils/Hypixel.js"
export default { export default {
name: "whoami", name: "whoami",

View File

@@ -1,8 +1,8 @@
import { SlashCommandBuilder, PermissionFlagsBits, userMention } from "discord.js" import { devMessage, embedColor } from "config/options.js"
import { getIGN, getHeadURL } from "utils/Hypixel.js" import { PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import { embedColor, devMessage } from "config/options.js"
import verify from "schemas/verifyTag.js"
import { ICommand } from "interfaces" import { ICommand } from "interfaces"
import verify from "schemas/verifyTag.js"
import { getHeadURL, getIGN } from "utils/Hypixel.js"
export default { export default {
name: "whois", name: "whois",

View File

@@ -29,4 +29,4 @@ export default {
await interaction.respond(results.slice(0, 6)).catch() await interaction.respond(results.slice(0, 6)).catch()
} }
} as IAutocomplete } as IAutocomplete

View File

@@ -1,8 +1,8 @@
import { embedColor, devMessage } from "config/options.js" import { devMessage, embedColor } from "config/options.js"
import guildapp from "schemas/guildAppTag.js" import { bwfkdr, bwstars, bwwins, duelswins, duelswlr, swkdr, swstars } from "config/reqs.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" import { IButton } from "interfaces"
import guildapp from "schemas/guildAppTag.js"
import { bedwarsLevel, getGuild, getHeadURL, getPlayer, hypixelLevel, skywarsLevel } from "utils/Hypixel.js"
export default { export default {
name: "checkstats", name: "checkstats",

View File

@@ -1,10 +1,10 @@
import { ActionRowBuilder, ButtonStyle, ButtonBuilder, TextChannel } from "discord.js" import { embedColor, hypixelGuildID, waitingListChannel, waitingListMessage } from "config/options.js"
import { embedColor, waitingListChannel, waitingListMessage, hypixelGuildID } from "config/options.js" import { waitingListRole } from "config/roles.js"
import color from "utils/functions/colors.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle, TextChannel } from "discord.js"
import { IButton } from "interfaces"
import guildapp from "schemas/guildAppTag.js" import guildapp from "schemas/guildAppTag.js"
import waitingList from "schemas/waitinglistTag.js" import waitingList from "schemas/waitinglistTag.js"
import { waitingListRole } from "config/roles.js" import { color } from "utils/functions/colors.js"
import { IButton } from "interfaces"
import { getGuild, getIGN } from "utils/Hypixel.js" import { getGuild, getIGN } from "utils/Hypixel.js"
export default { export default {
@@ -99,7 +99,7 @@ export default {
} }
} }
const fields: { name: string; value: string }[] = [] const fields: { name: string, value: string }[] = []
for (let i = 0; i < accepted.length; i++) { for (let i = 0; i < accepted.length; i++) {
const ign = await getIGN(accepted[i].uuid) const ign = await getIGN(accepted[i].uuid)

View File

@@ -1,4 +1,4 @@
import { ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } from "discord.js" import { ActionRowBuilder, ModalBuilder, TextInputBuilder, TextInputStyle } from "discord.js"
import { IButton } from "interfaces" import { IButton } from "interfaces"
export default { export default {

View File

@@ -1,10 +1,10 @@
import { ButtonBuilder, ButtonStyle, ActionRowBuilder, GuildMember, TextChannel } from "discord.js" import { ignM, largeM, smallM } from "config/limitmessages.js"
import { embedColor, applicationsChannel } from "config/options.js" import { applicationsChannel, embedColor } from "config/options.js"
import { largeM, smallM, ignM } from "config/limitmessages.js"
import { guild as guildQuestions } from "config/questions.js" import { guild as guildQuestions } from "config/questions.js"
import { guildRole } from "config/roles.js" import { guildRole } from "config/roles.js"
import guildapp from "schemas/guildAppTag.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js"
import { IButton } from "interfaces" import { IButton } from "interfaces"
import guildapp from "schemas/guildAppTag.js"
import applicationQuestions from "utils/functions/applicationquestions.js" import applicationQuestions from "utils/functions/applicationquestions.js"
export default { export default {
@@ -250,7 +250,7 @@ export default {
await guildapp.create({ await guildapp.create({
userID: user.user.id, userID: user.user.id,
uuid: uuid, uuid: uuid
}) })
const channel = guild.channels.cache.get(applicationsChannel) as TextChannel const channel = guild.channels.cache.get(applicationsChannel) as TextChannel

View File

@@ -1,8 +1,8 @@
import { ButtonBuilder, ActionRowBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js" import { ignM, largeM, smallM } from "config/limitmessages.js"
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 { embedColor, inactivityLogChannel } from "config/options.js"
import { inactivity } from "config/questions.js"
import { beast, gm, guildRole, guildStaff, manager, member, moderator } from "config/roles.js"
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js"
import { IButton } from "interfaces" import { IButton } from "interfaces"
import applicationQuestions from "utils/functions/applicationquestions.js" import applicationQuestions from "utils/functions/applicationquestions.js"
const guildRoles = [gm, manager, moderator, beast, member, guildStaff, guildRole] const guildRoles = [gm, manager, moderator, beast, member, guildStaff, guildRole]

View File

@@ -1,7 +1,7 @@
import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import staffapp from "schemas/staffAppTag.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js"
import { IButton } from "interfaces" import { IButton } from "interfaces"
import staffapp from "schemas/staffAppTag.js"
export default { export default {
name: "staffapplicationaccept", name: "staffapplicationaccept",

View File

@@ -1,4 +1,4 @@
import { ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } from "discord.js" import { ActionRowBuilder, ModalBuilder, TextInputBuilder, TextInputStyle } from "discord.js"
import { IButton } from "interfaces" import { IButton } from "interfaces"
export default { export default {

View File

@@ -1,11 +1,11 @@
import { ButtonBuilder, ButtonStyle, ActionRowBuilder, GuildMember, TextChannel } from "discord.js" import { ignM, largeM } from "config/limitmessages.js"
import { embedColor, staffApplicationsChannel } from "config/options.js" import { embedColor, staffApplicationsChannel } from "config/options.js"
import { largeM, ignM } from "config/limitmessages.js"
import { staff as staffQuestions } from "config/questions.js" import { staff as staffQuestions } from "config/questions.js"
import { guildRole, guildStaff } from "config/roles.js" import { guildRole, guildStaff } from "config/roles.js"
import staffapp from "schemas/staffAppTag.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js"
import settings from "schemas/settingsTag.js"
import { IButton } from "interfaces" import { IButton } from "interfaces"
import settings from "schemas/settingsTag.js"
import staffapp from "schemas/staffAppTag.js"
import env from "utils/Env.js" import env from "utils/Env.js"
import applicationQuestions from "utils/functions/applicationquestions.js" import applicationQuestions from "utils/functions/applicationquestions.js"

View File

@@ -1,4 +1,4 @@
import { ModalBuilder, ActionRowBuilder, TextInputBuilder, TextInputStyle } from "discord.js" import { ActionRowBuilder, ModalBuilder, TextInputBuilder, TextInputStyle } from "discord.js"
import { IButton } from "interfaces" import { IButton } from "interfaces"
export default { export default {

View File

@@ -1,7 +1,7 @@
import waitinglist from "schemas/waitinglistTag.js"
import { getGuild, getIGN } from "utils/Hypixel.js"
import { hypixelGuildID } from "config/options.js" import { hypixelGuildID } from "config/options.js"
import { IButton } from "interfaces" import { IButton } from "interfaces"
import waitinglist from "schemas/waitinglistTag.js"
import { getGuild, getIGN } from "utils/Hypixel.js"
export default { export default {
name: "waitinglistupdate", name: "waitinglistupdate",

View File

@@ -1,7 +1,7 @@
import { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, Message, GuildMember } from "discord.js"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import guildapp from "schemas/guildAppTag.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, GuildMember, Message } from "discord.js"
import { IModal } from "interfaces" import { IModal } from "interfaces"
import guildapp from "schemas/guildAppTag.js"
export default { export default {
name: "denyreasonbox", name: "denyreasonbox",
@@ -47,8 +47,9 @@ export default {
} }
const dmMessage = new EmbedBuilder() const dmMessage = new EmbedBuilder()
.setDescription("Your application for the Illegitimate guild has been denied\n" + .setDescription(
"**Reason:** `" + reason + "`" "Your application for the Illegitimate guild has been denied\n" +
"**Reason:** `" + reason + "`"
) )
.setColor(embedColor) .setColor(embedColor)
@@ -58,8 +59,9 @@ export default {
const responseEmbed = new EmbedBuilder() const responseEmbed = new EmbedBuilder()
.setTitle("Application Denied") .setTitle("Application Denied")
.setDescription("The application has been denied by <@" + interaction.user.id + ">.\n" + .setDescription(
"**Reason:** `" + reason + "`" "The application has been denied by <@" + interaction.user.id + ">.\n" +
"**Reason:** `" + reason + "`"
) )
.setColor(embedColor) .setColor(embedColor)
.setThumbnail(guild.iconURL() || "") .setThumbnail(guild.iconURL() || "")

View File

@@ -1,7 +1,7 @@
import { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import staffapp from "schemas/staffAppTag.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } from "discord.js"
import { IModal } from "interfaces" import { IModal } from "interfaces"
import staffapp from "schemas/staffAppTag.js"
export default { export default {
name: "staffdenyreasonbox", name: "staffdenyreasonbox",
@@ -35,8 +35,9 @@ export default {
}) })
const dmMessage = new EmbedBuilder() const dmMessage = new EmbedBuilder()
.setDescription("Your application for the Illegitimate guild staff has been denied\n" + .setDescription(
"**Reason:** `" + reason + "`" "Your application for the Illegitimate guild staff has been denied\n" +
"**Reason:** `" + reason + "`"
) )
.setColor(embedColor) .setColor(embedColor)

View File

@@ -1,9 +1,9 @@
import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js" import { devMessage, embedColor, hypixelGuildID } from "config/options.js"
import { embedColor, hypixelGuildID, devMessage } from "config/options.js"
import verify from "schemas/verifyTag.js"
import { IModal } from "interfaces"
import { GuildMember } from "discord.js" import { GuildMember } from "discord.js"
import { IModal } from "interfaces"
import verify from "schemas/verifyTag.js"
import roleManage from "utils/functions/rolesmanage.js" import roleManage from "utils/functions/rolesmanage.js"
import { getGuild, getHeadURL, getPlayer, getUUID } from "utils/Hypixel.js"
export default { export default {
name: "verifybox", name: "verifybox",
@@ -71,7 +71,6 @@ export default {
}] }]
}) })
const linkedDiscord = player?.socialMedia?.links?.DISCORD const linkedDiscord = player?.socialMedia?.links?.DISCORD
if (!linkedDiscord) { if (!linkedDiscord) {
interaction.editReply({ interaction.editReply({
@@ -87,7 +86,8 @@ export default {
if (linkedDiscord !== username) { if (linkedDiscord !== username) {
interaction.editReply({ interaction.editReply({
embeds: [{ embeds: [{
description: "<a:cross_a:1087808606897983539> The Discord account linked to `" + player.displayname + "` is currently `" + linkedDiscord + "`\n\n" + description: "<a:cross_a:1087808606897983539> The Discord account linked to `" +
player.displayname + "` is currently `" + linkedDiscord + "`\n\n" +
"**Please set your Discord tag on hypixel to `" + username + "` and try again.**", "**Please set your Discord tag on hypixel to `" + username + "` and try again.**",
color: embedColor color: embedColor
}] }]

View File

@@ -2,4 +2,4 @@ const largeM = "(256 characters max)"
const smallM = "(128 characters max)" const smallM = "(128 characters max)"
const ignM = "(16 characters max)" const ignM = "(16 characters max)"
export { largeM, smallM, ignM } export { ignM, largeM, smallM }

View File

@@ -14,24 +14,25 @@ const moderationLogChannel = "1193329771795447818"
const devLogChannel = "1193688673632391280" const devLogChannel = "1193688673632391280"
const waitingListChannel = "1145773618291298384" const waitingListChannel = "1145773618291298384"
const waitingListMessage = "1146027645415473193" const waitingListMessage = "1146027645415473193"
const instructionsgif = "https =//cdn.discordapp.com/attachments/838716950723952640/1188211176300089384/4DMu513uNxbM.gif?ex=6599b2e4&is=65873de4&hm=e727c7a39aacbc47d6a5453f4b5f792a45679983c30d662cd258a311381b6df0&" const instructionsgif =
"https =//cdn.discordapp.com/attachments/838716950723952640/1188211176300089384/4DMu513uNxbM.gif?ex=6599b2e4&is=65873de4&hm=e727c7a39aacbc47d6a5453f4b5f792a45679983c30d662cd258a311381b6df0&"
export { export {
embedColor,
guildid,
devMessage,
applicationsChannel, applicationsChannel,
staffApplicationsChannel,
inactivityLogChannel,
staffOtherChannel,
hypixelGuildID,
onlineLogChannel,
botLogChannel, botLogChannel,
guildLogChannel,
errorLogChannel,
moderationLogChannel,
devLogChannel, devLogChannel,
devMessage,
embedColor,
errorLogChannel,
guildid,
guildLogChannel,
hypixelGuildID,
inactivityLogChannel,
instructionsgif,
moderationLogChannel,
onlineLogChannel,
staffApplicationsChannel,
staffOtherChannel,
waitingListChannel, waitingListChannel,
waitingListMessage, waitingListMessage
instructionsgif }
}

View File

@@ -73,4 +73,4 @@ const inactivity = [
} }
] ]
export { guild, staff, inactivity } export { guild, inactivity, staff }

View File

@@ -11,17 +11,4 @@ const beastswstars = 20
const beastswkdr = 2.5 const beastswkdr = 2.5
const beastduelswins = 12000 const beastduelswins = 12000
export { export { beastbwfkdr, beastbwstars, beastduelswins, beastswkdr, beastswstars, bwfkdr, bwstars, bwwins, duelswins, duelswlr, swkdr, swstars }
bwstars,
bwfkdr,
bwwins,
swstars,
swkdr,
duelswins,
duelswlr,
beastbwstars,
beastbwfkdr,
beastswstars,
beastswkdr,
beastduelswins
}

View File

@@ -15,19 +15,19 @@ const countingBanned = "1192183486128341072"
const verifyTick = "1201624332674273290" const verifyTick = "1201624332674273290"
export { export {
gm,
manager,
moderator,
elite,
beast,
member,
guildStaff,
guildRole,
waitingListRole,
defaultMember,
admin, admin,
helper, beast,
muted,
countingBanned, countingBanned,
verifyTick defaultMember,
} elite,
gm,
guildRole,
guildStaff,
helper,
manager,
member,
moderator,
muted,
verifyTick,
waitingListRole
}

View File

@@ -1,15 +1,35 @@
import { ActivityType, Guild } from "discord.js" import { ActivityType, Guild } from "discord.js"
const statuses = [ const statuses = [
{ name: (guild: Guild) => { return `over ${guild.memberCount} members` }, type: ActivityType.Watching }, {
{ name: (guild: Guild) => { return `${guild.channels.cache.size} channels` }, type: ActivityType.Watching }, name: (guild: Guild) => {
{ name: (guild: Guild) => { return `${guild.premiumSubscriptionCount} boosters` }, type: ActivityType.Watching }, return `over ${guild.memberCount} members`
{ name: (guild: Guild) => { return `${guild.voiceStates.cache.size} members in vc` }, type: ActivityType.Watching }, },
type: ActivityType.Watching
},
{
name: (guild: Guild) => {
return `${guild.channels.cache.size} channels`
},
type: ActivityType.Watching
},
{
name: (guild: Guild) => {
return `${guild.premiumSubscriptionCount} boosters`
},
type: ActivityType.Watching
},
{
name: (guild: Guild) => {
return `${guild.voiceStates.cache.size} members in vc`
},
type: ActivityType.Watching
},
{ name: "over the Illegitimate Server", type: ActivityType.Watching }, { name: "over the Illegitimate Server", type: ActivityType.Watching },
{ name: "jon and pit edate", type: ActivityType.Watching }, { name: "jon and pit edate", type: ActivityType.Watching },
{ name: "for Martina's return", type: ActivityType.Watching }, { name: "for Martina's return", type: ActivityType.Watching },
{ name: "w vri's feelings", type: ActivityType.Playing }, { name: "w vri's feelings", type: ActivityType.Playing },
{ name: "urCryhard steal finals again", type: ActivityType.Watching }, { name: "urCryhard steal finals again", type: ActivityType.Watching },
{ name: "with Perlcence the AI", type: ActivityType.Playing }, { name: "with Perlcence the AI", type: ActivityType.Playing }
] ]
export default statuses export default statuses

9
src/enviroment.d.ts vendored
View File

@@ -7,4 +7,11 @@ declare global {
} }
} }
export { } declare global {
interface String {
removeIndents(): string
capitalizeFirstLetter(): string
}
}
export {}

View File

@@ -1,9 +1,9 @@
import { hypixelGuildID, guildLogChannel, embedColor, devMessage } from "config/options.js" import { devMessage, embedColor, guildLogChannel, hypixelGuildID } 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.js"
import { TextChannel } from "discord.js" import { TextChannel } from "discord.js"
import { ICron, IGuildData } from "interfaces"
import { color } from "utils/functions/colors.js"
import { getGuild, getIGN } from "utils/Hypixel.js"
import { client } from "utils/Illegitimate.js"
async function guildWeekly() { async function guildWeekly() {
const channel = client.channels.cache.get(guildLogChannel) as TextChannel const channel = client.channels.cache.get(guildLogChannel) as TextChannel
@@ -22,7 +22,7 @@ async function guildWeekly() {
const guild = (await getGuild(hypixelGuildID, "id")) as IGuildData const guild = (await getGuild(hypixelGuildID, "id")) as IGuildData
const guildMembersList: string[] = [] const guildMembersList: string[] = []
const topWeeklyMembers: { name: string; value: string; inline: boolean }[] = [] const topWeeklyMembers: { name: string, value: string, inline: boolean }[] = []
const guildName = guild.name const guildName = guild.name
const guildMembers = guild.members const guildMembers = guild.members
@@ -44,9 +44,7 @@ async function guildWeekly() {
guildMembersList.push("**#" + position + " " + ign + ":** `" + gexp + "`") guildMembersList.push("**#" + position + " " + ign + ":** `" + gexp + "`")
} }
const list = Array.from({ length: sliceSize }, (_, i) => const list = Array.from({ length: sliceSize }, (_, i) => guildMembersList.slice(i * sliceSize, (i + 1) * sliceSize))
guildMembersList.slice(i * sliceSize, (i + 1) * sliceSize)
)
list.forEach((item, index) => { list.forEach((item, index) => {
if (item.length === 0) return if (item.length === 0) return

View File

@@ -1,5 +1,5 @@
import { GuildMember, userMention } from "discord.js"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import { GuildMember, userMention } from "discord.js"
import { IEvent } from "interfaces" import { IEvent } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"

View File

@@ -1,6 +1,6 @@
import { ChatInputCommandInteraction, ButtonInteraction } from "discord.js" import { ButtonInteraction, ChatInputCommandInteraction } from "discord.js"
import color from "utils/functions/colors.js"
import { IEvent } from "interfaces" import { IEvent } from "interfaces"
import { color } from "utils/functions/colors.js"
export default { export default {
name: "logBtnsCmds", name: "logBtnsCmds",
@@ -22,9 +22,9 @@ export default {
console.log( console.log(
color( color(
interaction.user.username + "#" + interaction.user.username + "#" +
interaction.user.discriminator + " ran " + interaction.user.discriminator + " ran " +
interaction.commandName + " " + interaction.commandName + " " +
subcommand, subcommand,
"pink" "pink"
) )
) )
@@ -32,8 +32,8 @@ export default {
console.log( console.log(
color( color(
interaction.user.username + "#" + interaction.user.username + "#" +
interaction.user.discriminator + " ran " + interaction.user.discriminator + " ran " +
interaction.commandName, interaction.commandName,
"pink" "pink"
) )
) )
@@ -44,8 +44,8 @@ export default {
console.log( console.log(
color( color(
interaction.user.username + "#" + interaction.user.username + "#" +
interaction.user.discriminator + " clicked " + interaction.user.discriminator + " clicked " +
interaction.customId, interaction.customId,
"pink" "pink"
) )
) )

View File

@@ -1,5 +1,5 @@
import { IEvent } from "interfaces"
import { Message } from "discord.js" import { Message } from "discord.js"
import { IEvent } from "interfaces"
export default { export default {
name: "ur mom", name: "ur mom",

View File

@@ -1,6 +1,6 @@
import { IEvent } from "interfaces" import { IEvent } from "interfaces"
import { ExtendedClient as Client } from "utils/Client.js" import { ExtendedClient as Client } from "utils/Client.js"
import color from "utils/functions/colors.js" import { color } from "utils/functions/colors.js"
export default { export default {
name: "conolelog", name: "conolelog",

View File

@@ -1,6 +1,6 @@
import logToChannel from "utils/functions/logtochannel.js"
import { IEvent } from "interfaces"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import { IEvent } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js"
export default { export default {
name: "sendonlinemessage", name: "sendonlinemessage",

View File

@@ -1,4 +1,4 @@
import { ContextMenuCommandInteraction, ContextMenuCommandBuilder } from "discord.js" import { ContextMenuCommandBuilder, ContextMenuCommandInteraction } from "discord.js"
import { ExtendedClient } from "utils/Client.js" import { ExtendedClient } from "utils/Client.js"
export default interface IContextMenu { export default interface IContextMenu {

View File

@@ -1,3 +1,4 @@
// dprint-ignore-file
export interface IGuild { export interface IGuild {
data: { data: {
success: boolean success: boolean

View File

@@ -1,3 +1,4 @@
// dprint-ignore-file
export interface IPlayer { export interface IPlayer {
data: { data: {
success: boolean success: boolean

View File

@@ -5,23 +5,10 @@ import IContextMenu from "./IContextMenu"
import IEvent from "./IEvent" import IEvent from "./IEvent"
import IModal from "./IModal" import IModal from "./IModal"
import IEnv from "./IEnv"
import ICron from "./ICron" import ICron from "./ICron"
import IEnv from "./IEnv"
import { IGuild, IGuildData } from "./IGuild" import { IGuild, IGuildData } from "./IGuild"
import { IPlayer, IPlayerData } from "./IPlayer" import { IPlayer, IPlayerData } from "./IPlayer"
export { export { IAutocomplete, IButton, ICommand, IContextMenu, ICron, IEnv, IEvent, IGuild, IGuildData, IModal, IPlayer, IPlayerData }
IEnv,
ICron,
IAutocomplete,
IButton,
ICommand,
IContextMenu,
IEvent,
IModal,
IGuild,
IGuildData,
IPlayer,
IPlayerData
}

View File

@@ -2,9 +2,9 @@ import Sequelize, { InferAttributes, InferCreationAttributes, Model } from "sequ
import { sequelize } from "utils/Illegitimate.js" import { sequelize } from "utils/Illegitimate.js"
interface WaitingList extends Model<InferAttributes<WaitingList>, InferCreationAttributes<WaitingList>> { interface WaitingList extends Model<InferAttributes<WaitingList>, InferCreationAttributes<WaitingList>> {
userID: string; userID: string
uuid: string; uuid: string
timestamp: number; timestamp: number
} }
const tag = sequelize.define<WaitingList>("waitingList", { const tag = sequelize.define<WaitingList>("waitingList", {

View File

@@ -429,4 +429,4 @@ const TimeZones = [
"Pacific/Wallis" "Pacific/Wallis"
] as const ] as const
export default TimeZones export default TimeZones

View File

@@ -13,4 +13,4 @@ export type SnipeCache = {
createdAt: number createdAt: number
deletedAt: number deletedAt: number
attachments: string[] attachments: string[]
} }

View File

@@ -1,9 +1,9 @@
import { RESTPostAPIChatInputApplicationCommandsJSONBody } from "discord.js"
import fs from "fs" import fs from "fs"
import { ICommand } from "interfaces"
import { ExtendedClient } from "./Client.js" import { ExtendedClient } from "./Client.js"
import env from "./Env.js" import env from "./Env.js"
import { ICommand } from "interfaces" import { color } from "./functions/colors.js"
import { RESTPostAPIChatInputApplicationCommandsJSONBody } from "discord.js"
import color from "./functions/colors.js"
type FileType = "js" | "ts" type FileType = "js" | "ts"
export default async function autoDeployCommands(fileType: FileType, client: ExtendedClient) { export default async function autoDeployCommands(fileType: FileType, client: ExtendedClient) {
@@ -36,10 +36,10 @@ export default async function autoDeployCommands(fileType: FileType, client: Ext
return { return {
name: option.name, name: option.name,
description: option.description, description: option.description,
type: option.type, type: option.type
} }
}), }),
defaultPermission: command.default_member_permissions ?? null, defaultPermission: command.default_member_permissions ?? null
} }
}).sort((a, b) => a.name > b.name ? 1 : -1) }).sort((a, b) => a.name > b.name ? 1 : -1)
@@ -56,10 +56,10 @@ export default async function autoDeployCommands(fileType: FileType, client: Ext
return { return {
name: option.name, name: option.name,
description: option.description, description: option.description,
type: option.type, type: option.type
} }
}), }),
defaultPermission: command.defaultMemberPermissions, defaultPermission: command.defaultMemberPermissions
} }
}).sort((a, b) => a.name > b.name ? 1 : -1) }).sort((a, b) => a.name > b.name ? 1 : -1)
@@ -108,7 +108,6 @@ export default async function autoDeployCommands(fileType: FileType, client: Ext
} }
} }
console.log(color("-------------", "lavender")) console.log(color("-------------", "lavender"))
console.log(color(nc, "lavender")) console.log(color(nc, "lavender"))
} }

View File

@@ -1,8 +1,8 @@
import { Client, Collection, GatewayIntentBits, Partials } from "discord.js" import { Client, Collection, GatewayIntentBits, Partials } from "discord.js"
import color from "./functions/colors.js" import { IAutocomplete, IButton, ICommand, IContextMenu, IModal } from "interfaces"
import { ICommand, IContextMenu, IButton, IModal, IAutocomplete } from "interfaces"
import env from "./Env.js"
import autoDeployCommands from "./Autodeploy.js" import autoDeployCommands from "./Autodeploy.js"
import env from "./Env.js"
import { color } from "./functions/colors.js"
export class ExtendedClient extends Client { export class ExtendedClient extends Client {
commands: Collection<string, ICommand> = new Collection() commands: Collection<string, ICommand> = new Collection()

View File

@@ -1,10 +1,10 @@
import { ExtendedClient as Client } from "utils/Client.js"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import { IAutocomplete } from "interfaces"
import { Events } from "discord.js" import { Events } from "discord.js"
import color from "utils/functions/colors.js"
import path from "path"
import fs from "fs" import fs from "fs"
import { IAutocomplete } from "interfaces"
import path from "path"
import { ExtendedClient as Client } from "utils/Client.js"
import { color } from "utils/functions/colors.js"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
type FileType = "js" | "ts" type FileType = "js" | "ts"
const __dirname = import.meta.dirname const __dirname = import.meta.dirname

View File

@@ -1,10 +1,10 @@
import { ExtendedClient as Client } from "utils/Client.js"
import color from "utils/functions/colors.js"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import { IButton } from "interfaces"
import { Events } from "discord.js" import { Events } from "discord.js"
import path from "path"
import fs from "fs" import fs from "fs"
import { IButton } from "interfaces"
import path from "path"
import { ExtendedClient as Client } from "utils/Client.js"
import { color } from "utils/functions/colors.js"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
type FileType = "js" | "ts" type FileType = "js" | "ts"
const __dirname = import.meta.dirname const __dirname = import.meta.dirname

View File

@@ -1,10 +1,10 @@
import { ExtendedClient as Client } from "utils/Client.js"
import color from "utils/functions/colors.js"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import { ICommand } from "interfaces"
import { Events } from "discord.js" import { Events } from "discord.js"
import path from "path"
import fs from "fs" import fs from "fs"
import { ICommand } from "interfaces"
import path from "path"
import { ExtendedClient as Client } from "utils/Client.js"
import { color } from "utils/functions/colors.js"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
type FileType = "js" | "ts" type FileType = "js" | "ts"
const __dirname = import.meta.dirname const __dirname = import.meta.dirname
@@ -29,7 +29,7 @@ export default async function loadSlashCommandsEvents(client: Client, ft: FileTy
} }
} }
//! command handler // ! command handler
client.on(Events.InteractionCreate, async interaction => { client.on(Events.InteractionCreate, async interaction => {
if (!interaction.isChatInputCommand()) return if (!interaction.isChatInputCommand()) return

View File

@@ -1,10 +1,10 @@
import { ExtendedClient as Client } from "utils/Client.js"
import color from "utils/functions/colors.js"
import { IContextMenu } from "interfaces"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import { Events } from "discord.js" import { Events } from "discord.js"
import path from "path"
import fs from "fs" import fs from "fs"
import { IContextMenu } from "interfaces"
import path from "path"
import { ExtendedClient as Client } from "utils/Client.js"
import { color } from "utils/functions/colors.js"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
type FileType = "js" | "ts" type FileType = "js" | "ts"
const __dirname = import.meta.dirname const __dirname = import.meta.dirname
@@ -29,7 +29,7 @@ export default async function loadContextMenuEvents(client: Client, ft: FileType
} }
} }
//! context menu command handler // ! context menu command handler
client.on(Events.InteractionCreate, async interaction => { client.on(Events.InteractionCreate, async interaction => {
if (!interaction.isContextMenuCommand()) return if (!interaction.isContextMenuCommand()) return

View File

@@ -1,7 +1,7 @@
import { CronJob } from "cron" import { CronJob } from "cron"
import path from "path"
import fs from "fs" import fs from "fs"
import { ICron } from "interfaces" import { ICron } from "interfaces"
import path from "path"
const __dirname = import.meta.dirname const __dirname = import.meta.dirname
export default async function loadCronEvents() { export default async function loadCronEvents() {
@@ -12,8 +12,7 @@ export default async function loadCronEvents() {
const filePath = path.join(cronPath, file) const filePath = path.join(cronPath, file)
const { default: cron } = await import("file://" + filePath) as { default: ICron } const { default: cron } = await import("file://" + filePath) as { default: ICron }
const time = const time = cron.time.seconds + " " +
cron.time.seconds + " " +
cron.time.minutes + " " + cron.time.minutes + " " +
cron.time.hours + " " + cron.time.hours + " " +
cron.time.dayOfMonth + " " + cron.time.dayOfMonth + " " +

View File

@@ -1,7 +1,7 @@
import { ExtendedClient as Client } from "utils/Client.js" import fs from "fs"
import { IEvent } from "interfaces" import { IEvent } from "interfaces"
import path from "path" import path from "path"
import fs from "fs" import { ExtendedClient as Client } from "utils/Client.js"
const __dirname = import.meta.dirname const __dirname = import.meta.dirname
export default async function loadEvents(client: Client) { export default async function loadEvents(client: Client) {

View File

@@ -1,10 +1,10 @@
import { ExtendedClient as Client } from "utils/Client.js"
import color from "utils/functions/colors.js"
import { embedColor } from "config/options.js" import { embedColor } from "config/options.js"
import { IModal } from "interfaces"
import { Events } from "discord.js" import { Events } from "discord.js"
import path from "path"
import fs from "fs" import fs from "fs"
import { IModal } from "interfaces"
import path from "path"
import { ExtendedClient as Client } from "utils/Client.js"
import { color } from "utils/functions/colors.js"
import logToChannel from "utils/functions/logtochannel.js" import logToChannel from "utils/functions/logtochannel.js"
type FileType = "js" | "ts" type FileType = "js" | "ts"
const __dirname = import.meta.dirname const __dirname = import.meta.dirname

Some files were not shown because too many files have changed in this diff Show More