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:ts": "nodemon --config nodemon.json src/index.ts",
"dev:js": "nodemon --config nodemon-js.json dist/index.js",
"format": "dprint fmt \"**/*.ts\"",
"check": "tsc --noEmit",
"lint": "eslint",
"lint:fix": "eslint --fix",
@@ -61,6 +62,7 @@
"chokidar": "^3.6.0",
"concurrently": "^8.2.2",
"cross-env": "^7.0.3",
"dprint": "^0.47.2",
"eslint": "^9.9.0",
"globals": "^15.9.0",
"sqlite3": "^5.1.7",

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
import { REST, RESTPutAPIApplicationCommandsJSONBody, Routes } from "discord.js"
import fs from "fs"
import env from "../src/utils/Env"
import { ICommand } from "../src/interfaces"
import env from "../src/utils/Env"
const rest = new REST({ version: "10" }).setToken(env.dev.devtoken)
const commands: RESTPutAPIApplicationCommandsJSONBody = []
@@ -21,13 +21,13 @@ for (const file of contentMenuCommands) {
}
}
(async () => {
;(async () => {
try {
console.log(`Started refreshing ${commands.length} application (/) commands.`)
await rest.put(
Routes.applicationGuildCommands(env.dev.devid, env.dev.guildid),
{ body: commands },
{ body: commands }
).then(() => {
console.log(`Successfully reloaded ${commands.length} application (/) commands.`)
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"
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"
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 { embedColor, devMessage, hypixelGuildID } from "config/options.js"
import { IContextMenu } from "interfaces"
import verify from "schemas/verifyTag.js"
import { getGuild, getHeadURL, getIGN } from "utils/Hypixel.js"
import roleManage from "utils/functions/rolesmanage.js"
import { waitingListRole } from "config/roles.js"
import { getGuild, getHeadURL, getIGN } from "utils/Hypixel.js"
export default {
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 { ICommand } from "interfaces"
import { devMessage, embedColor } from "config/options.js"
import { anilist } from "anilist"
import { capitalizeFirstLetter, removeIndents } from "utils/functions/funcs.js"
export default {
name: "anime",
description: "Anime subcommands",
public: true,
dev: false,
subcommands: true,
data: new SlashCommandBuilder()
.setName("anime")
@@ -59,14 +57,14 @@ export default {
const animeEpisodes = anime.episodes ? animeEpisodesRaw : "No episodes available"
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 animeSeasonRaw = capitalizeFirstLetter(anime.season ?? "null") + " " + anime.startDate?.year
const animeSeasonRaw = anime.season?.capitalizeFirstLetter() + " " + anime.startDate?.year
const animeSeason = anime.season ? animeSeasonRaw : "No season available"
await interaction.editReply({
embeds: [{
title: romaji + " | " + english,
url: anime.siteUrl || "",
description: removeIndents(`
description: `
**Description:** ${animeDescription}
**Genres:** ${anime.genres.join(", ")}
@@ -76,7 +74,7 @@ export default {
**Season:** ${animeSeason}
**Start Date:** ${animeStartDate}
**End Date:** ${animeEndDate}
`),
`.removeIndents(),
color: embedColor,
thumbnail: {
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 { embedColor, devMessage } from "config/options.js"
import { GuildMember, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import { ICommand } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js"
import { removeIndents } from "utils/functions/funcs.js"
export default {
name: "ban",
@@ -36,7 +35,7 @@ export default {
{ name: "4 days", value: 4 },
{ name: "5 days", value: 5 },
{ name: "6 days", value: 6 },
{ name: "7 days", value: 7 },
{ name: "7 days", value: 7 }
)
)
.setDefaultMemberPermissions(PermissionFlagsBits.BanMembers)
@@ -102,12 +101,12 @@ export default {
icon_url: mod.user.avatarURL() || undefined
},
title: "Member Banned",
description: removeIndents(`
description: `
**User:** ${userMention(member.user.id)}
**Mod:** ${userMention(mod.user.id)}
**Reason:** ${reason}
**Messages Deleted:** ${messageDeletionDays} days
`),
`.removeIndents(),
color: embedColor,
thumbnail: {
url: mod.user.avatarURL() || ""
@@ -136,5 +135,5 @@ export default {
}
}]
})
},
}
} 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 { ICommand } from "interfaces"
import { embedColor, devMessage } from "config/options.js"
import { createRequire } from "node:module"
import os from "os"
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 { dependencies, devDependencies } = require("../../package.json")
@@ -46,7 +45,7 @@ export default {
await interaction.reply({
embeds: [{
title: "Bot Info",
description: removeIndents(`
description: `
__**Bot**__
> **Name**: \`${client.user!.username}\`
> **ID**: \`${client.user!.id}\`
@@ -56,8 +55,8 @@ export default {
__**Project**__
> **Node Version:** \`${process.version}\`
> **Typescript Version:** \`${(castedDevDeps.typescript).replace("^", "")}\`
> **Discord.js Version:** \`${(castedDeps["discord.js"]).replace("^", "")}\`
> **Typescript Version:** \`${castedDevDeps.typescript.replace("^", "")}\`
> **Discord.js Version:** \`${castedDeps["discord.js"].replace("^", "")}\`
> **Dependencies (${Object.keys(castedDeps).length}):** \`${deps}\`
> **Dev Dependencies (${Object.keys(castedDevDeps).length}):** \`${devDeps}\`
> **Uptime:** \`${prettyMs(client.uptime!, { verbose: true })}\`
@@ -67,15 +66,15 @@ export default {
> **Channels:** \`${client.channels.cache.size}\`
> **Users:** \`${client.users.cache.size}\`
> **Roles:** \`${client.guilds.cache.reduce((a, b) => a + b.roles.cache.size, 0)}\`
`),
`.removeIndents(),
thumbnail: {
url: client.user!.avatarURL() || "",
url: client.user!.avatarURL() || ""
},
color: embedColor,
footer: {
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 { 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 { bedwarsLevel, getGuild, getHeadURL, getPlayer, getUUID, hypixelLevel, skywarsLevel } from "utils/Hypixel.js"
export default {
name: "check",
@@ -202,7 +202,7 @@ export default {
" / " + duelswins.toString() + "`\n" +
"**➺ WLR:** `" + hsduelswlr.toFixed(2).toString() +
" / " + duelswlr.toString() + "`\n" +
"**➺ KDR:** `" + hsduelskd.toFixed(2).toString() + "`",
"**➺ KDR:** `" + hsduelskd.toFixed(2).toString() + "`"
})
} else {
statsFields.push({

View File

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

View File

@@ -1,5 +1,5 @@
import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js"
import { embedColor } from "config/options.js"
import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js"
import { ICommand } from "interfaces"
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 { embedColor, devMessage } from "config/options.js"
import { ICommand } from "interfaces"
import ban from "./counting/ban.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 { embedColor, devMessage } from "config/options.js"
import { ChatInputCommandInteraction, GuildMember, userMention } from "discord.js"
export default async function ban(interaction: ChatInputCommandInteraction): Promise<void> {
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 { embedColor, devMessage } from "config/options.js"
import { ChatInputCommandInteraction, GuildMember, userMention } from "discord.js"
export default async function ban(interaction: ChatInputCommandInteraction): Promise<void> {
const member = interaction.options.getMember("user")! as GuildMember

View File

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

View File

@@ -1,11 +1,10 @@
import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.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 { devMessage, embedColor, hypixelGuildID } from "config/options.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 {
name: "forceupdate",
@@ -85,11 +84,11 @@ export default {
await interaction.editReply({
embeds: [{
description: removeIndents(`
description: `
${usermentioned} was given the \`Default Member\` role.
IGN: \`${ign}\`
`),
`.removeIndents(),
color: embedColor,
thumbnail: {
url: head!
@@ -159,11 +158,11 @@ export default {
await interaction.editReply({
embeds: [{
description: removeIndents(`
description: `
${usermentioned} was given the \`${replyRank}\` role.
IGN: \`${ign}\`
`),
`.removeIndents(),
color: embedColor,
thumbnail: {
url: head!

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,7 +1,6 @@
import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js"
import { embedColor, devMessage, instructionsgif } from "config/options.js"
import { devMessage, embedColor, instructionsgif } from "config/options.js"
import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js"
import { ICommand } from "interfaces"
import { removeIndents } from "utils/functions/funcs.js"
export default {
name: "instructions",
@@ -19,14 +18,14 @@ export default {
await interaction.reply({
embeds: [{
title: "Verification",
description: removeIndents(`
description: `
- Log onto hypixel.
- Right click with the head in your hotbar.
- Click on the social media icon.
- Click on the discord icon.
- Type your username in the chat and press enter.
- Run the \`/verify\` command in this channel.
`),
`.removeIndents(),
thumbnail: {
url: interaction.guild?.iconURL() || ""
},
@@ -36,7 +35,7 @@ export default {
icon_url: interaction.guild!.iconURL() || undefined
},
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 { embedColor, devMessage } from "config/options.js"
import { GuildMember, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import { ICommand } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js"
import { removeIndents } from "utils/functions/funcs.js"
export default {
name: "kick",
@@ -76,11 +75,11 @@ export default {
icon_url: mod.user.avatarURL() || undefined
},
title: "Member Kicked",
description: removeIndents(`
description: `
**User:** ${userMention(member.user.id)}
**Mod:** ${userMention(mod.user.id)}
**Reason:** ${reason}
`),
`.removeIndents(),
color: embedColor,
thumbnail: {
url: mod.user.avatarURL() || ""

View File

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

View File

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

View File

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

View File

@@ -23,7 +23,7 @@ export default async function play(interaction: ChatInputCommandInteraction) {
const { track } = await player.play(channel, query, {
requestedBy: interaction.user,
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
}]
})
}
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,10 +1,9 @@
import { SlashCommandBuilder, PermissionFlagsBits, userMention, GuildMember } from "discord.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 { devMessage, embedColor } from "config/options.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 {
name: "remove",
@@ -58,11 +57,11 @@ export default {
icon_url: mod.avatarURL() || undefined
},
title: "Waiting List - Remove User",
description: removeIndents(`
description: `
**User:** ${userMention(member.user.id)}
**Reason:** ${reason}
**Mod:** ${userMention(mod.id)}
`),
`.removeIndents(),
color: embedColor,
thumbnail: {
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 { embedColor, devMessage } from "config/options.js"
import { bwfkdr, bwstars, bwwins, swstars, swkdr, duelswins, duelswlr } from "config/reqs.js"
import { ICommand } from "interfaces"
export default {

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,11 +1,11 @@
import { SlashCommandBuilder, PermissionFlagsBits } from "discord.js"
import { embedColor, devMessage } from "config/options.js"
import { devMessage, embedColor } from "config/options.js"
import { PermissionFlagsBits, SlashCommandBuilder } from "discord.js"
import { ICommand } from "interfaces"
import help from "./staff/help.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 removeGuildRoles from "./staff/removeguildroles.js"
import updateAll from "./staff/updateall.js"
export default {
name: "staff",

View File

@@ -1,7 +1,7 @@
import { bwwins, beastbwfkdr, beastbwstars, beastswkdr, beastswstars, beastduelswins, duelswlr } from "config/reqs.js"
import { embedColor, devMessage } from "config/options.js"
import { hypixelLevel, bedwarsLevel, skywarsLevel, getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js"
import { devMessage, embedColor } from "config/options.js"
import { beastbwfkdr, beastbwstars, beastduelswins, beastswkdr, beastswstars, bwwins, duelswlr } from "config/reqs.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> {
await interaction.deferReply()

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
import { devMessage, embedColor } from "config/options.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 { formatUuid, getHeadURL, getIGN, getUUID } from "utils/Hypixel.js"
export default {
name: "uuid",

View File

@@ -1,11 +1,11 @@
import { devMessage, embedColor, hypixelGuildID } from "config/options.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 verify from "schemas/verifyTag.js"
import { IPlayerData } 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 {
name: "verify",
@@ -114,7 +114,8 @@ export default {
if (linkedDiscord !== username) {
interaction.editReply({
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.**",
color: embedColor
}]

View File

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

View File

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

View File

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

View File

@@ -1,10 +1,10 @@
import { ActionRowBuilder, ButtonStyle, ButtonBuilder, TextChannel } from "discord.js"
import { embedColor, waitingListChannel, waitingListMessage, hypixelGuildID } from "config/options.js"
import color from "utils/functions/colors.js"
import { embedColor, hypixelGuildID, waitingListChannel, waitingListMessage } from "config/options.js"
import { waitingListRole } from "config/roles.js"
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, TextChannel } from "discord.js"
import { IButton } from "interfaces"
import guildapp from "schemas/guildAppTag.js"
import waitingList from "schemas/waitinglistTag.js"
import { waitingListRole } from "config/roles.js"
import { IButton } from "interfaces"
import { color } from "utils/functions/colors.js"
import { getGuild, getIGN } from "utils/Hypixel.js"
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++) {
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"
export default {

View File

@@ -1,10 +1,10 @@
import { ButtonBuilder, ButtonStyle, ActionRowBuilder, GuildMember, TextChannel } from "discord.js"
import { embedColor, applicationsChannel } from "config/options.js"
import { largeM, smallM, ignM } from "config/limitmessages.js"
import { ignM, largeM, smallM } from "config/limitmessages.js"
import { applicationsChannel, embedColor } from "config/options.js"
import { guild as guildQuestions } from "config/questions.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 guildapp from "schemas/guildAppTag.js"
import applicationQuestions from "utils/functions/applicationquestions.js"
export default {
@@ -250,7 +250,7 @@ export default {
await guildapp.create({
userID: user.user.id,
uuid: uuid,
uuid: uuid
})
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 { 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 { ignM, largeM, smallM } from "config/limitmessages.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 applicationQuestions from "utils/functions/applicationquestions.js"
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 staffapp from "schemas/staffAppTag.js"
import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js"
import { IButton } from "interfaces"
import staffapp from "schemas/staffAppTag.js"
export default {
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"
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 { largeM, ignM } from "config/limitmessages.js"
import { staff as staffQuestions } from "config/questions.js"
import { guildRole, guildStaff } from "config/roles.js"
import staffapp from "schemas/staffAppTag.js"
import settings from "schemas/settingsTag.js"
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js"
import { IButton } from "interfaces"
import settings from "schemas/settingsTag.js"
import staffapp from "schemas/staffAppTag.js"
import env from "utils/Env.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"
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 { IButton } from "interfaces"
import waitinglist from "schemas/waitinglistTag.js"
import { getGuild, getIGN } from "utils/Hypixel.js"
export default {
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 guildapp from "schemas/guildAppTag.js"
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, GuildMember, Message } from "discord.js"
import { IModal } from "interfaces"
import guildapp from "schemas/guildAppTag.js"
export default {
name: "denyreasonbox",
@@ -47,8 +47,9 @@ export default {
}
const dmMessage = new EmbedBuilder()
.setDescription("Your application for the Illegitimate guild has been denied\n" +
"**Reason:** `" + reason + "`"
.setDescription(
"Your application for the Illegitimate guild has been denied\n" +
"**Reason:** `" + reason + "`"
)
.setColor(embedColor)
@@ -58,8 +59,9 @@ export default {
const responseEmbed = new EmbedBuilder()
.setTitle("Application Denied")
.setDescription("The application has been denied by <@" + interaction.user.id + ">.\n" +
"**Reason:** `" + reason + "`"
.setDescription(
"The application has been denied by <@" + interaction.user.id + ">.\n" +
"**Reason:** `" + reason + "`"
)
.setColor(embedColor)
.setThumbnail(guild.iconURL() || "")

View File

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

View File

@@ -1,9 +1,9 @@
import { getUUID, getPlayer, getGuild, getHeadURL } from "utils/Hypixel.js"
import { embedColor, hypixelGuildID, devMessage } from "config/options.js"
import verify from "schemas/verifyTag.js"
import { IModal } from "interfaces"
import { devMessage, embedColor, hypixelGuildID } from "config/options.js"
import { GuildMember } from "discord.js"
import { IModal } 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 {
name: "verifybox",
@@ -71,7 +71,6 @@ export default {
}]
})
const linkedDiscord = player?.socialMedia?.links?.DISCORD
if (!linkedDiscord) {
interaction.editReply({
@@ -87,7 +86,8 @@ export default {
if (linkedDiscord !== username) {
interaction.editReply({
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.**",
color: embedColor
}]

View File

@@ -2,4 +2,4 @@ const largeM = "(256 characters max)"
const smallM = "(128 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 waitingListChannel = "1145773618291298384"
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 {
embedColor,
guildid,
devMessage,
applicationsChannel,
staffApplicationsChannel,
inactivityLogChannel,
staffOtherChannel,
hypixelGuildID,
onlineLogChannel,
botLogChannel,
guildLogChannel,
errorLogChannel,
moderationLogChannel,
devLogChannel,
devMessage,
embedColor,
errorLogChannel,
guildid,
guildLogChannel,
hypixelGuildID,
inactivityLogChannel,
instructionsgif,
moderationLogChannel,
onlineLogChannel,
staffApplicationsChannel,
staffOtherChannel,
waitingListChannel,
waitingListMessage,
instructionsgif
}
waitingListMessage
}

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 beastduelswins = 12000
export {
bwstars,
bwfkdr,
bwwins,
swstars,
swkdr,
duelswins,
duelswlr,
beastbwstars,
beastbwfkdr,
beastswstars,
beastswkdr,
beastduelswins
}
export { beastbwfkdr, beastbwstars, beastduelswins, beastswkdr, beastswstars, bwfkdr, bwstars, bwwins, duelswins, duelswlr, swkdr, swstars }

View File

@@ -15,19 +15,19 @@ const countingBanned = "1192183486128341072"
const verifyTick = "1201624332674273290"
export {
gm,
manager,
moderator,
elite,
beast,
member,
guildStaff,
guildRole,
waitingListRole,
defaultMember,
admin,
helper,
muted,
beast,
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"
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) => { return `${guild.premiumSubscriptionCount} boosters` }, type: ActivityType.Watching },
{ name: (guild: Guild) => { return `${guild.voiceStates.cache.size} members in vc` }, type: ActivityType.Watching },
{
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) => {
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: "jon and pit edate", type: ActivityType.Watching },
{ name: "for Martina's return", type: ActivityType.Watching },
{ name: "w vri's feelings", type: ActivityType.Playing },
{ 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 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 { devMessage, embedColor, guildLogChannel, hypixelGuildID } from "config/options.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() {
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 guildMembersList: string[] = []
const topWeeklyMembers: { name: string; value: string; inline: boolean }[] = []
const topWeeklyMembers: { name: string, value: string, inline: boolean }[] = []
const guildName = guild.name
const guildMembers = guild.members
@@ -44,9 +44,7 @@ async function guildWeekly() {
guildMembersList.push("**#" + position + " " + ign + ":** `" + gexp + "`")
}
const list = Array.from({ length: sliceSize }, (_, i) =>
guildMembersList.slice(i * sliceSize, (i + 1) * sliceSize)
)
const list = Array.from({ length: sliceSize }, (_, i) => guildMembersList.slice(i * sliceSize, (i + 1) * sliceSize))
list.forEach((item, index) => {
if (item.length === 0) return

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
import { IEvent } from "interfaces"
import { ExtendedClient as Client } from "utils/Client.js"
import color from "utils/functions/colors.js"
import { color } from "utils/functions/colors.js"
export default {
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 { IEvent } from "interfaces"
import logToChannel from "utils/functions/logtochannel.js"
export default {
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"
export default interface IContextMenu {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,8 +1,8 @@
import { Client, Collection, GatewayIntentBits, Partials } from "discord.js"
import color from "./functions/colors.js"
import { ICommand, IContextMenu, IButton, IModal, IAutocomplete } from "interfaces"
import env from "./Env.js"
import { IAutocomplete, IButton, ICommand, IContextMenu, IModal } from "interfaces"
import autoDeployCommands from "./Autodeploy.js"
import env from "./Env.js"
import { color } from "./functions/colors.js"
export class ExtendedClient extends Client {
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 { IAutocomplete } from "interfaces"
import { Events } from "discord.js"
import color from "utils/functions/colors.js"
import path from "path"
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"
type FileType = "js" | "ts"
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 { IButton } from "interfaces"
import { Events } from "discord.js"
import path from "path"
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"
type FileType = "js" | "ts"
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 { ICommand } from "interfaces"
import { Events } from "discord.js"
import path from "path"
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"
type FileType = "js" | "ts"
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 => {
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 { Events } from "discord.js"
import path from "path"
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"
type FileType = "js" | "ts"
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 => {
if (!interaction.isContextMenuCommand()) return

View File

@@ -1,7 +1,7 @@
import { CronJob } from "cron"
import path from "path"
import fs from "fs"
import { ICron } from "interfaces"
import path from "path"
const __dirname = import.meta.dirname
export default async function loadCronEvents() {
@@ -12,8 +12,7 @@ export default async function loadCronEvents() {
const filePath = path.join(cronPath, file)
const { default: cron } = await import("file://" + filePath) as { default: ICron }
const time =
cron.time.seconds + " " +
const time = cron.time.seconds + " " +
cron.time.minutes + " " +
cron.time.hours + " " +
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 path from "path"
import fs from "fs"
import { ExtendedClient as Client } from "utils/Client.js"
const __dirname = import.meta.dirname
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 { IModal } from "interfaces"
import { Events } from "discord.js"
import path from "path"
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"
type FileType = "js" | "ts"
const __dirname = import.meta.dirname

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