Merge branch 'dev' into 'main'
Dev See merge request illegitimate/illegitimate-bot!149
This commit is contained in:
18
.eslintrc.js
18
.eslintrc.js
@@ -1,10 +1,13 @@
|
||||
module.exports = {
|
||||
"env": {
|
||||
"node": true,
|
||||
"commonjs": true,
|
||||
"es2021": true
|
||||
"es2021": true,
|
||||
"browser": true
|
||||
},
|
||||
"extends": "eslint:recommended",
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/recommended"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"env": {
|
||||
@@ -18,9 +21,14 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": "latest"
|
||||
"ecmaVersion": "latest",
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": [
|
||||
"@typescript-eslint"
|
||||
],
|
||||
"rules": {
|
||||
"indent": [
|
||||
"error",
|
||||
@@ -60,5 +68,7 @@ module.exports = {
|
||||
"asyncArrow": "always"
|
||||
}],
|
||||
"comma-spacing": "error",
|
||||
"@typescript-eslint/no-var-requires": "off",
|
||||
"@typescript-eslint/no-explicit-any": "off"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@ FROM node:20.9.0-alpine3.18
|
||||
COPY package.json ./
|
||||
COPY yarn.lock ./
|
||||
|
||||
RUN yarn install
|
||||
RUN yarn install --production
|
||||
13
package.json
13
package.json
@@ -12,8 +12,8 @@
|
||||
"dev:build": "ts-node scripts/dev-deploy.ts",
|
||||
"dev:delete": "ts-node scripts/delete-commands.ts",
|
||||
"format": "prettier --write src/",
|
||||
"lint": "eslint_d src",
|
||||
"lint:fix": "eslint_d --fix src",
|
||||
"lint": "eslint src",
|
||||
"lint:fix": "eslint --fix src",
|
||||
"prod:build": "ts-node scripts/deploy-commands.ts"
|
||||
},
|
||||
"author": "Taken",
|
||||
@@ -26,13 +26,16 @@
|
||||
"ioredis": "^5.3.2",
|
||||
"mongoose": "^7.0.1",
|
||||
"ms": "^2.1.3",
|
||||
"pretty-ms": "^8.0.0"
|
||||
"pretty-ms": "^8.0.0",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/ms": "^0.7.34",
|
||||
"@types/node": "^20.10.5",
|
||||
"@typescript-eslint/eslint-plugin": "^6.16.0",
|
||||
"@typescript-eslint/parser": "^6.16.0",
|
||||
"eslint": "^8.56.0",
|
||||
"prettier": "^3.1.1",
|
||||
"ts-node": "^10.9.2",
|
||||
"typescript": "^5.3.3"
|
||||
"ts-node": "^10.9.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,15 +5,15 @@ import env from "../src/utils/Env"
|
||||
const rest = new REST({ version: "10" }).setToken(env.prod.token!)
|
||||
|
||||
const commands: RESTPutAPIApplicationCommandsJSONBody = []
|
||||
const commandFiles = fs.readdirSync("./dist/src/commands").filter(file => file.endsWith(".js"))
|
||||
const contentMenuCommands = fs.readdirSync("./dist/src/commands-contextmenu").filter(file => file.endsWith(".js"))
|
||||
const commandFiles = fs.readdirSync("./src/commands").filter(file => file.endsWith(".ts"))
|
||||
const contentMenuCommands = fs.readdirSync("./src/commands-contextmenu").filter(file => file.endsWith(".ts"))
|
||||
|
||||
for (const file of commandFiles) {
|
||||
const command: Command = require(`../dist/src/commands/${file}`)
|
||||
const command: Command = require(`../src/commands/${file}`)
|
||||
commands.push(command.data.toJSON())
|
||||
}
|
||||
for (const file of contentMenuCommands) {
|
||||
const command: Command = require(`../dist/src/commands-contextmenu/${file}`)
|
||||
const command: Command = require(`../src/commands-contextmenu/${file}`)
|
||||
commands.push(command.data.toJSON())
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,8 @@ export = {
|
||||
.setName("ign")
|
||||
.setDescription("The player's IGN.")
|
||||
.setRequired(true),
|
||||
),
|
||||
)
|
||||
.setDMPermission(false),
|
||||
|
||||
async execute(interaction) {
|
||||
await interaction.deferReply({})
|
||||
@@ -285,13 +286,6 @@ export = {
|
||||
const hypixelExp = player.networkExp || 0
|
||||
const level = hypixelLevel(hypixelExp)
|
||||
|
||||
const footerText = interaction.guild
|
||||
? interaction.guild.name
|
||||
: interaction.user.username
|
||||
const footerIcon = interaction.guild
|
||||
? interaction.guild.iconURL({ forceStatic: false })
|
||||
: interaction.user.avatarURL({ forceStatic: false })
|
||||
|
||||
await interaction.editReply({
|
||||
embeds: [
|
||||
{
|
||||
@@ -311,8 +305,8 @@ export = {
|
||||
url: head!,
|
||||
},
|
||||
footer: {
|
||||
text: footerText + " | " + devMessage,
|
||||
icon_url: footerIcon!,
|
||||
text: interaction.guild!.name + " | " + devMessage,
|
||||
icon_url: interaction.guild!.iconURL({ forceStatic: true })!,
|
||||
},
|
||||
fields: statsFields,
|
||||
},
|
||||
|
||||
@@ -42,7 +42,7 @@ export = {
|
||||
async execute(interaction) {
|
||||
await interaction.deferReply()
|
||||
|
||||
const user = interaction.member as GuildMember
|
||||
const user = interaction.options.getMember("user") as GuildMember
|
||||
const ign = interaction.options.getString("ign")
|
||||
const mod = interaction.user
|
||||
const embedColor = Number(color.replace("#", "0x"))
|
||||
|
||||
@@ -79,7 +79,8 @@ export = {
|
||||
"The amount of guild members to show. [Default: 10]",
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
.setDMPermission(false),
|
||||
|
||||
async execute(interaction) {
|
||||
const subcommand = interaction.options.getSubcommand()
|
||||
@@ -100,21 +101,14 @@ export = {
|
||||
return
|
||||
}
|
||||
|
||||
const footerText = interaction.guild
|
||||
? interaction.guild.name
|
||||
: interaction.user.username
|
||||
const footerIcon = interaction.guild
|
||||
? interaction.guild.iconURL({ forceStatic: false })
|
||||
: interaction.user.avatarURL({ forceStatic: true })
|
||||
|
||||
await interaction.reply({
|
||||
embeds: [
|
||||
{
|
||||
description: "This command is currently under development",
|
||||
color: embedColor,
|
||||
footer: {
|
||||
text: footerText + " | " + devMessage,
|
||||
icon_url: footerIcon!,
|
||||
text: interaction.guild!.name + " | " + devMessage,
|
||||
icon_url: interaction.guild!.iconURL({ forceStatic: false }) || undefined,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@@ -191,13 +191,6 @@ async function guildInfo(
|
||||
averageGuildMembersWeeklyXPUnformatted,
|
||||
)
|
||||
|
||||
const footerText = interaction.guild
|
||||
? interaction.guild.name
|
||||
: interaction.user.username
|
||||
const footerIcon = interaction.guild
|
||||
? interaction.guild.iconURL({ forceStatic: false })
|
||||
: interaction.user.avatarURL({ forceStatic: false })
|
||||
|
||||
await interaction.editReply({
|
||||
embeds: [
|
||||
{
|
||||
@@ -240,8 +233,8 @@ async function guildInfo(
|
||||
],
|
||||
color: embedColor,
|
||||
footer: {
|
||||
text: footerText + " | " + devMessage,
|
||||
icon_url: footerIcon!,
|
||||
text: interaction.guild!.name + " | " + devMessage,
|
||||
icon_url: interaction.guild!.iconURL({ forceStatic: false }) || undefined,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@@ -167,13 +167,6 @@ async function guildMember(
|
||||
":" +
|
||||
guildMemberJoinSeconds
|
||||
|
||||
const footerText = interaction.guild
|
||||
? interaction.guild.name
|
||||
: interaction.user.username
|
||||
const footerIcon = interaction.guild
|
||||
? interaction.guild.iconURL({ forceStatic: false })
|
||||
: interaction.user.avatarURL({ forceStatic: false })
|
||||
|
||||
await interaction.editReply({
|
||||
embeds: [
|
||||
{
|
||||
@@ -210,8 +203,8 @@ async function guildMember(
|
||||
},
|
||||
],
|
||||
footer: {
|
||||
text: footerText + " | " + devMessage,
|
||||
icon_url: footerIcon!,
|
||||
text: interaction.guild!.name + " | " + devMessage,
|
||||
icon_url: interaction.guild!.iconURL({ forceStatic: false })!,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@@ -263,12 +263,6 @@ async function guildTop(
|
||||
}
|
||||
})
|
||||
|
||||
const footerText = interaction.guild
|
||||
? interaction.guild.name
|
||||
: interaction.user.username
|
||||
const footerIcon = interaction.guild
|
||||
? interaction.guild.iconURL({ forceStatic: false })
|
||||
: interaction.user.avatarURL({ forceStatic: false })
|
||||
const cacheStatusText = cacheStatus ? " | [Cache]" : ""
|
||||
|
||||
await interaction.editReply({
|
||||
@@ -285,8 +279,8 @@ async function guildTop(
|
||||
color: embedColor,
|
||||
fields: newList,
|
||||
footer: {
|
||||
text: footerText + " | " + devMessage + cacheStatusText,
|
||||
icon_url: footerIcon!,
|
||||
text: interaction.guild!.name + " | " + devMessage + cacheStatusText,
|
||||
icon_url: interaction.guild!.iconURL({ forceStatic: false })!,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@@ -12,7 +12,7 @@ export = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName("help")
|
||||
.setDescription("List's all commands usable by a member")
|
||||
.setDMPermission(true),
|
||||
.setDMPermission(false),
|
||||
|
||||
async execute(interaction, client) {
|
||||
await interaction.deferReply({ ephemeral: true })
|
||||
@@ -57,12 +57,6 @@ export = {
|
||||
}
|
||||
|
||||
const embedColor = Number(color.replace("#", "0x"))
|
||||
const footerText = interaction.guild
|
||||
? interaction.guild.name
|
||||
: interaction.user.username
|
||||
const footerIcon = interaction.guild
|
||||
? interaction.guild.iconURL({ forceStatic: false })
|
||||
: interaction.user.avatarURL({ forceStatic: false })
|
||||
|
||||
await interaction.editReply({
|
||||
embeds: [
|
||||
@@ -72,13 +66,11 @@ export = {
|
||||
fields: commandList,
|
||||
color: embedColor,
|
||||
thumbnail: {
|
||||
url: interaction?.guild?.iconURL({
|
||||
forceStatic: true,
|
||||
})!,
|
||||
url: interaction.guild!.iconURL({ forceStatic: true, })!,
|
||||
},
|
||||
footer: {
|
||||
icon_url: footerIcon!,
|
||||
text: footerText + " | " + devMessage,
|
||||
icon_url: interaction.guild!.iconURL({ forceStatic: false})!,
|
||||
text: interaction.guild!.name + " | " + devMessage,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@@ -12,7 +12,8 @@ export = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName("instructions")
|
||||
.setDescription("Instructions for verification")
|
||||
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator),
|
||||
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
|
||||
.setDMPermission(false),
|
||||
|
||||
async execute(interaction) {
|
||||
const embedColor = Number(color.replace("#", "0x"))
|
||||
|
||||
@@ -11,28 +11,22 @@ export = {
|
||||
|
||||
data: new SlashCommandBuilder()
|
||||
.setName("ping")
|
||||
.setDescription("Get's the bot's ping."),
|
||||
.setDescription("Get's the bot's ping.")
|
||||
.setDMPermission(false),
|
||||
|
||||
async execute(interaction, client) {
|
||||
await interaction.deferReply()
|
||||
|
||||
const embedColor = Number(color.replace("#", "0x"))
|
||||
|
||||
const footerText = interaction.guild
|
||||
? interaction.guild.name
|
||||
: interaction.user.username
|
||||
const footerIcon = interaction.guild
|
||||
? interaction.guild.iconURL({ forceStatic: false })
|
||||
: interaction.user.avatarURL({ forceStatic: false })
|
||||
|
||||
await interaction.editReply({
|
||||
embeds: [
|
||||
{
|
||||
description: "Ping of the bot is " + client.ws.ping + "ms.",
|
||||
color: embedColor,
|
||||
footer: {
|
||||
text: footerText + " | " + devMessage,
|
||||
icon_url: footerIcon || undefined,
|
||||
text: interaction.guild!.name + " | " + devMessage,
|
||||
icon_url: interaction.guild?.iconURL({ forceStatic: false }) || undefined,
|
||||
},
|
||||
timestamp: new Date().toISOString(),
|
||||
},
|
||||
|
||||
@@ -20,20 +20,13 @@ export = {
|
||||
|
||||
data: new SlashCommandBuilder()
|
||||
.setName("reqs")
|
||||
.setDescription("Displays the requirements for the guild."),
|
||||
.setDescription("Displays the requirements for the guild.")
|
||||
.setDMPermission(false),
|
||||
|
||||
async execute(interaction) {
|
||||
await interaction.deferReply({ ephemeral: true })
|
||||
|
||||
const embedColor = Number(color.replace("#", "0x"))
|
||||
const footerText = interaction.guild
|
||||
? interaction.guild.name
|
||||
: interaction.user.username
|
||||
const footerIcon = interaction.guild
|
||||
? interaction.guild.iconURL({ forceStatic: false })
|
||||
: interaction.user.avatarURL({ forceStatic: false })
|
||||
|
||||
await interaction.editReply({
|
||||
await interaction.reply({
|
||||
embeds: [
|
||||
{
|
||||
title: "Requirements",
|
||||
@@ -42,9 +35,7 @@ export = {
|
||||
color: embedColor,
|
||||
thumbnail: {
|
||||
url:
|
||||
interaction?.guild?.iconURL({
|
||||
forceStatic: false,
|
||||
}) || "",
|
||||
interaction?.guild?.iconURL({ forceStatic: false, }) || "",
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
@@ -78,8 +69,8 @@ export = {
|
||||
},
|
||||
],
|
||||
footer: {
|
||||
text: footerText + " | " + devMessage,
|
||||
icon_url: footerIcon || undefined,
|
||||
text: interaction.guild!.name + " | " + devMessage,
|
||||
icon_url: interaction.guild!.iconURL({ forceStatic: false }) || undefined,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@@ -1,26 +1,6 @@
|
||||
import verify = require("../../schemas/verifySchema")
|
||||
import { color, hypixelGuildID } from "../../../config/options.json"
|
||||
import {
|
||||
gm,
|
||||
manager,
|
||||
moderator,
|
||||
beast,
|
||||
elite,
|
||||
member,
|
||||
guildRole,
|
||||
guildStaff,
|
||||
defaultMember,
|
||||
} from "../../../config/roles.json"
|
||||
const removeThese = [
|
||||
gm,
|
||||
manager,
|
||||
moderator,
|
||||
beast,
|
||||
elite,
|
||||
member,
|
||||
guildRole,
|
||||
guildStaff,
|
||||
]
|
||||
import removeRoles from "../../utils/functions/rolesmanage"
|
||||
import { ChatInputCommandInteraction, GuildMember } from "discord.js"
|
||||
import env from "../../utils/Env"
|
||||
import { getGuild } from "../../utils/Hypixel"
|
||||
@@ -31,13 +11,13 @@ export async function updateDiscordRoles(
|
||||
): Promise<void> {
|
||||
const discordMember = interaction.member as GuildMember
|
||||
const embedColor = Number(color.replace("#", "0x"))
|
||||
await interaction.deferReply({ ephemeral: true })
|
||||
await interaction.deferReply()
|
||||
|
||||
if (discordMember.user.id !== env.prod.dev) {
|
||||
await interaction.editReply({
|
||||
embeds: [
|
||||
{
|
||||
description: `You do not have permission to use this command.`,
|
||||
description: "You do not have permission to use this command.",
|
||||
color: embedColor,
|
||||
},
|
||||
],
|
||||
@@ -66,6 +46,17 @@ export async function updateDiscordRoles(
|
||||
})
|
||||
const guildMemberIDs = hypixelGuildMembers.map(gmember => gmember.uuid)
|
||||
|
||||
const allVerifiedUsers = (await verify.find({})) as {
|
||||
userID: string
|
||||
uuid: string
|
||||
}[]
|
||||
const verifiedUsers = allVerifiedUsers.map(user => {
|
||||
return {
|
||||
userID: user.userID,
|
||||
uuid: user.uuid,
|
||||
}
|
||||
})
|
||||
|
||||
await interaction.editReply({
|
||||
embeds: [
|
||||
{
|
||||
@@ -76,19 +67,23 @@ export async function updateDiscordRoles(
|
||||
})
|
||||
|
||||
for (const gmember of guildMembers) {
|
||||
const memberData = await verify.findOne({ userID: gmember.id })
|
||||
const memberData = verifiedUsers.find(
|
||||
user => user.userID === gmember.id,
|
||||
)
|
||||
|
||||
if (!memberData) {
|
||||
const rolesToremove = removeRoles("default").rolesToRemove
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
rolesToremove,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
}
|
||||
|
||||
if (!guildMemberIDs.includes(memberData?.uuid || "none")) {
|
||||
const rolesToremove = removeRoles("default").rolesToRemove
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
rolesToremove,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
@@ -99,98 +94,95 @@ export async function updateDiscordRoles(
|
||||
console.log("Updating roles for " + gmember.member.user.username)
|
||||
|
||||
if (guildMemberRank === "Guild Master") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
// const rolesToRemove = removeThese.filter(role => role !== gm && role !== guildStaff && role !== guildRole)
|
||||
// await gmember.member.roles.remove(rolesToRemove, "Updating all discord members")
|
||||
// await gmember.member.roles.add( gm, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( guildStaff, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( guildRole, "Updating all discord members",)
|
||||
const rolesmanage = removeRoles("gm")
|
||||
gmember.member.roles.remove(
|
||||
rolesmanage.rolesToRemove,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
gm,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildStaff,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
gmember.member.roles.add(
|
||||
rolesmanage.rolesToAdd,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
} else if (guildMemberRank === "Manager") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
// const rolesToRemove = removeThese.filter(role => role !== manager && role !== guildStaff && role !== guildRole)
|
||||
// await gmember.member.roles.remove( rolesToRemove, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( manager, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( guildStaff, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( guildRole, "Updating all discord members",)
|
||||
const rolesmanage = removeRoles("manager")
|
||||
gmember.member.roles.remove(
|
||||
rolesmanage.rolesToRemove,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
manager,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildStaff,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
gmember.member.roles.add(
|
||||
rolesmanage.rolesToAdd,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
} else if (guildMemberRank === "Moderator") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
// const rolesToRemove = removeThese.filter(role => role !== moderator && role !== guildStaff && role !== guildRole)
|
||||
// await gmember.member.roles.remove( rolesToRemove, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( moderator, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( guildStaff, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( guildRole, "Updating all discord members",)
|
||||
const rolesmanage = removeRoles("moderator")
|
||||
gmember.member.roles.remove(
|
||||
rolesmanage.rolesToRemove,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
moderator,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildStaff,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
gmember.member.roles.add(
|
||||
rolesmanage.rolesToAdd,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
} else if (guildMemberRank === "Beast") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
// const rolesToRemove = removeThese.filter(role => role !== beast && role !== guildRole)
|
||||
// await gmember.member.roles.remove( rolesToRemove, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( beast, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( guildRole, "Updating all discord members",)
|
||||
const rolesmanage = removeRoles("beast")
|
||||
gmember.member.roles.remove(
|
||||
rolesmanage.rolesToRemove,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
beast,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
gmember.member.roles.add(
|
||||
rolesmanage.rolesToAdd,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
} else if (guildMemberRank === "Elite") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
// const rolesToRemove = removeThese.filter(role => role !== elite && role !== guildRole)
|
||||
// await gmember.member.roles.remove( rolesToRemove, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( elite, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( guildRole, "Updating all discord members",)
|
||||
const rolesmanage = removeRoles("elite")
|
||||
gmember.member.roles.remove(
|
||||
rolesmanage.rolesToRemove,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
elite,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
gmember.member.roles.add(
|
||||
rolesmanage.rolesToAdd,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
} else if (guildMemberRank === "Member") {
|
||||
await gmember.member.roles.remove(
|
||||
removeThese,
|
||||
// const rolesToRemove = removeThese.filter(role => role !== member && role !== guildRole)
|
||||
// await gmember.member.roles.remove( rolesToRemove, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( member, "Updating all discord members",)
|
||||
// await gmember.member.roles.add( guildRole, "Updating all discord members",)
|
||||
const rolesmanage = removeRoles("member")
|
||||
gmember.member.roles.remove(
|
||||
rolesmanage.rolesToRemove,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
member,
|
||||
"Updating all discord members",
|
||||
)
|
||||
await gmember.member.roles.add(
|
||||
guildRole,
|
||||
gmember.member.roles.add(
|
||||
rolesmanage.rolesToAdd,
|
||||
"Updating all discord members",
|
||||
)
|
||||
continue
|
||||
@@ -199,10 +191,12 @@ export async function updateDiscordRoles(
|
||||
}
|
||||
}
|
||||
|
||||
console.log("Successfully updated all roles.")
|
||||
|
||||
await interaction.editReply({
|
||||
embeds: [
|
||||
{
|
||||
description: `Successfully updated all roles.`,
|
||||
description: "Successfully updated all roles.",
|
||||
color: embedColor,
|
||||
},
|
||||
],
|
||||
|
||||
@@ -18,7 +18,8 @@ export = {
|
||||
.setName("ign")
|
||||
.setDescription("Player's name")
|
||||
.setRequired(true),
|
||||
),
|
||||
)
|
||||
.setDMPermission(false),
|
||||
|
||||
async execute(interaction) {
|
||||
await interaction.deferReply()
|
||||
@@ -29,12 +30,6 @@ export = {
|
||||
const newIgn = (await getIGN(uuid)) as string
|
||||
const head = await getHeadURL(ign)
|
||||
const embedColor = Number(color.replace("#", "0x"))
|
||||
const footerText = interaction.guild
|
||||
? interaction.guild.name
|
||||
: interaction.user.username
|
||||
const footerIcon = interaction.guild
|
||||
? interaction.guild.iconURL({ forceStatic: false })
|
||||
: interaction.user.avatarURL({ forceStatic: false })
|
||||
|
||||
if (!uuid) {
|
||||
interaction.editReply({
|
||||
@@ -64,8 +59,8 @@ export = {
|
||||
url: head!,
|
||||
},
|
||||
footer: {
|
||||
text: footerText + " | " + devMessage,
|
||||
icon_url: footerIcon || undefined,
|
||||
text: interaction.guild!.name + " | " + devMessage,
|
||||
icon_url: interaction.guild?.iconURL({ forceStatic: false }) || undefined,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { SlashCommandBuilder } from "discord.js"
|
||||
import { GuildMember, SlashCommandBuilder } from "discord.js"
|
||||
import { getUUID, getPlayer, getGuild, getHeadURL } from "../utils/Hypixel"
|
||||
import { color, hypixelGuildID, devMessage } from "../../config/options.json"
|
||||
import mongoose from "mongoose"
|
||||
@@ -39,8 +39,7 @@ export = {
|
||||
async execute(interaction) {
|
||||
await interaction.deferReply()
|
||||
|
||||
const user1 = interaction.user
|
||||
const user = interaction.guild!.members.cache.get(user1.id)!
|
||||
const user = interaction.member! as GuildMember
|
||||
const ign = interaction.options.getString("ign")!
|
||||
const embedColor = Number(color.replace("#", "0x"))
|
||||
|
||||
@@ -114,10 +113,10 @@ export = {
|
||||
}
|
||||
|
||||
let username = ""
|
||||
if (user1.discriminator === "0") {
|
||||
username = user1.username
|
||||
if (user.user.discriminator === "0") {
|
||||
username = user.user.username
|
||||
} else {
|
||||
username = user1.username + "#" + user1.discriminator
|
||||
username = user.user.username + "#" + user.user.discriminator
|
||||
}
|
||||
|
||||
await interaction.editReply({
|
||||
|
||||
@@ -4,5 +4,6 @@ export default interface Autocomplete {
|
||||
name: string
|
||||
description: string
|
||||
type: "autocomplete"
|
||||
execute: (interaction: AutocompleteInteraction) => Promise<void>
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
execute: (interacion: AutocompleteInteraction) => Promise<void>
|
||||
}
|
||||
|
||||
@@ -4,5 +4,6 @@ export default interface Button {
|
||||
name: string
|
||||
description: string
|
||||
type: "button"
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
execute: (interaction: ButtonInteraction) => Promise<void>
|
||||
}
|
||||
|
||||
@@ -12,8 +12,6 @@ export default interface Command {
|
||||
"addSubcommand" | "addSubcommandGroup" | "addIntegerOption"
|
||||
>
|
||||
subcommands?: boolean
|
||||
execute: (
|
||||
interaction: ChatInputCommandInteraction,
|
||||
client: Client,
|
||||
) => Promise<void>
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
execute: ( interaction: ChatInputCommandInteraction, client: Client,) => Promise<void>
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@ export default interface ContextMenu {
|
||||
type: "contextmenu"
|
||||
dev?: boolean
|
||||
data: ContextMenuCommandBuilder
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
execute: (interaction: ContextMenuCommandInteraction) => Promise<void>
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { CronCommand } from "cron"
|
||||
import { TimeZones } from "."
|
||||
|
||||
interface TimeFormat {
|
||||
|
||||
@@ -5,5 +5,6 @@ export default interface Event {
|
||||
description: string
|
||||
type: "event"
|
||||
event: keyof ClientEvents
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
execute(...args: any[]): void
|
||||
}
|
||||
|
||||
@@ -4,5 +4,6 @@ export default interface Modal {
|
||||
name: string
|
||||
description: string
|
||||
type: "modal"
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
execute: (interaction: ModalSubmitInteraction) => Promise<void>
|
||||
}
|
||||
|
||||
@@ -8,8 +8,6 @@ const client = new Client()
|
||||
const redis = new Redis(env.prod.redisURI!)
|
||||
|
||||
class Bot {
|
||||
constructor() {}
|
||||
|
||||
async start() {
|
||||
init()
|
||||
client.start()
|
||||
|
||||
@@ -10,14 +10,14 @@ function getExpForLevel(level: number): number {
|
||||
}
|
||||
|
||||
switch (respectedLevel) {
|
||||
case 1:
|
||||
return 500
|
||||
case 2:
|
||||
return 1000
|
||||
case 3:
|
||||
return 2000
|
||||
case 4:
|
||||
return 3500
|
||||
case 1:
|
||||
return 500
|
||||
case 2:
|
||||
return 1000
|
||||
case 3:
|
||||
return 2000
|
||||
case 4:
|
||||
return 3500
|
||||
}
|
||||
return 5000
|
||||
}
|
||||
|
||||
@@ -12,10 +12,10 @@ function getLevel(exp: number): number {
|
||||
return exp <= 1
|
||||
? 1
|
||||
: Math.floor(
|
||||
1 +
|
||||
1 +
|
||||
REVERSE_PQ_PREFIX +
|
||||
Math.sqrt(REVERSE_CONST + GROWTH_DIVIDES_2 * exp),
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
function hypixelLevel(exp: number): number {
|
||||
|
||||
92
src/utils/functions/rolesmanage.ts
Normal file
92
src/utils/functions/rolesmanage.ts
Normal file
@@ -0,0 +1,92 @@
|
||||
import {
|
||||
gm,
|
||||
manager,
|
||||
moderator,
|
||||
beast,
|
||||
elite,
|
||||
member,
|
||||
guildStaff,
|
||||
guildRole,
|
||||
} from "../../../config/roles.json"
|
||||
const roles = [
|
||||
gm,
|
||||
manager,
|
||||
moderator,
|
||||
beast,
|
||||
elite,
|
||||
member,
|
||||
guildStaff,
|
||||
guildRole,
|
||||
]
|
||||
|
||||
type RoleType =
|
||||
| "gm"
|
||||
| "manager"
|
||||
| "moderator"
|
||||
| "beast"
|
||||
| "elite"
|
||||
| "member"
|
||||
| "default"
|
||||
|
||||
export default function removeRoles(role: RoleType): {
|
||||
rolesToRemove: string[]
|
||||
rolesToAdd: string[]
|
||||
} {
|
||||
if (role === "gm") {
|
||||
const rolesToRemove = roles.filter(
|
||||
role => role !== gm && role !== guildStaff && role !== guildRole,
|
||||
)
|
||||
const rolesToAdd = [gm, guildStaff, guildRole]
|
||||
return { rolesToRemove, rolesToAdd }
|
||||
}
|
||||
|
||||
if (role === "manager") {
|
||||
const rolesToRemove = roles.filter(
|
||||
role =>
|
||||
role !== manager && role !== guildStaff && role !== guildRole,
|
||||
)
|
||||
const rolesToAdd = [manager, guildStaff, guildRole]
|
||||
return { rolesToRemove, rolesToAdd }
|
||||
}
|
||||
|
||||
if (role === "moderator") {
|
||||
const rolesToRemove = roles.filter(
|
||||
role =>
|
||||
role !== moderator && role !== guildStaff && role !== guildRole,
|
||||
)
|
||||
const rolesToAdd = [moderator, guildStaff, guildRole]
|
||||
return { rolesToRemove, rolesToAdd }
|
||||
}
|
||||
|
||||
if (role === "beast") {
|
||||
const rolesToRemove = roles.filter(
|
||||
role => role !== beast && role !== guildRole,
|
||||
)
|
||||
const rolesToAdd = [beast, guildRole]
|
||||
return { rolesToRemove, rolesToAdd }
|
||||
}
|
||||
|
||||
if (role === "elite") {
|
||||
const rolesToRemove = roles.filter(
|
||||
role => role !== elite && role !== guildRole,
|
||||
)
|
||||
const rolesToAdd = [elite, guildRole]
|
||||
return { rolesToRemove, rolesToAdd }
|
||||
}
|
||||
|
||||
if (role === "member") {
|
||||
const rolesToRemove = roles.filter(
|
||||
role => role !== member && role !== guildRole,
|
||||
)
|
||||
const rolesToAdd = [member, guildRole]
|
||||
return { rolesToRemove, rolesToAdd }
|
||||
}
|
||||
|
||||
if (role === "default") {
|
||||
const rolesToRemove = roles
|
||||
const rolesToAdd: string[] = []
|
||||
return { rolesToRemove, rolesToAdd }
|
||||
}
|
||||
|
||||
return { rolesToRemove: [], rolesToAdd: [] }
|
||||
}
|
||||
@@ -9,6 +9,8 @@
|
||||
"skipLibCheck": true,
|
||||
"strictNullChecks": true,
|
||||
"resolveJsonModule": true,
|
||||
"removeComments": true,
|
||||
"noUnusedLocals": true,
|
||||
"outDir": "dist"
|
||||
},
|
||||
"include": ["src"],
|
||||
|
||||
Reference in New Issue
Block a user