Merge branch 'dev' into 'main'

Dev

See merge request illegitimate/illegitimate-bot!305
This commit is contained in:
2024-10-16 09:32:42 +00:00
19 changed files with 65 additions and 63 deletions

View File

@@ -1,4 +1,4 @@
import { ApplicationCommandType, ContextMenuCommandBuilder, PermissionFlagsBits, userMention } from "discord.js"
import { ApplicationCommandType, ContextMenuCommandBuilder, InteractionContextType, PermissionFlagsBits, userMention } from "discord.js"
import { IContextMenu } from "~/interfaces"
export default {
@@ -9,6 +9,7 @@ export default {
data: new ContextMenuCommandBuilder()
.setName("Congratulate")
.setType(ApplicationCommandType.Message)
.setContexts(InteractionContextType.Guild)
.setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages),
async execute({ interaction }) {

View File

@@ -1,4 +1,4 @@
import { ApplicationCommandType, ContextMenuCommandBuilder, PermissionFlagsBits } from "discord.js"
import { ApplicationCommandType, ContextMenuCommandBuilder, InteractionContextType, PermissionFlagsBits } from "discord.js"
import { IContextMenu } from "~/interfaces"
export default {
@@ -9,6 +9,7 @@ export default {
data: new ContextMenuCommandBuilder()
.setName("Reset Nickname")
.setType(ApplicationCommandType.User)
.setContexts(InteractionContextType.Guild)
.setDefaultMemberPermissions(PermissionFlagsBits.ManageNicknames),
async execute({ interaction }) {

View File

@@ -1,4 +1,4 @@
import { ApplicationCommandType, ContextMenuCommandBuilder, PermissionFlagsBits, userMention } from "discord.js"
import { ApplicationCommandType, ContextMenuCommandBuilder, InteractionContextType, PermissionFlagsBits, userMention } from "discord.js"
import db from "src/drizzle/db.js"
import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js"
import { waitingListRole } from "~/config/roles.js"
@@ -14,6 +14,7 @@ export default {
data: new ContextMenuCommandBuilder()
.setName("Update User")
.setType(ApplicationCommandType.User)
.setContexts(InteractionContextType.Guild)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator),
async execute({ interaction }) {
@@ -51,7 +52,7 @@ export default {
})
const ign = (await getIGN(verifyData.uuid)) as string
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
await interaction.editReply({
embeds: [{

View File

@@ -53,7 +53,7 @@ export default {
}]
})
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
const player = await getPlayer(uuid)
if (!player) {
interaction.editReply({

View File

@@ -61,7 +61,7 @@ export default {
return
}
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
const formattedIgn = await getIGN(uuid)
await interaction.editReply({
embeds: [{

View File

@@ -58,7 +58,7 @@ export default {
})
const ign = (await getIGN(verifyData.uuid)) as string
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
await interaction.editReply({
embeds: [{

View File

@@ -111,7 +111,7 @@ export default {
responseGuildID = guild._id
}
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
if (responseGuildID === hypixelGuildID) {
const GuildMembers = guild!.members
const guildRank = GuildMembers.find(member => member.uuid === player.uuid)!.rank

View File

@@ -32,7 +32,7 @@ export default async function guildMember(interaction: ChatInputCommandInteracti
}]
})
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
const player = await getPlayer(uuid)
if (!player) {
await interaction.editReply({

View File

@@ -38,7 +38,7 @@ export default async function beast(interaction: ChatInputCommandInteraction): P
}]
})
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
const player = await getPlayer(uuid)
if (!player) {
interaction.editReply({

View File

@@ -58,7 +58,7 @@ export default {
}
const ign = (await getIGN(verifyData.uuid)) as string
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
if (guildID !== hypixelGuildID) {
const roles = roleManage("default")
await user.roles.remove(roles.rolesToRemove, "User used the update command")

View File

@@ -40,7 +40,7 @@ export default {
const formattedUuid = formatUuid(uuid)
const newIgn = await getIGN(uuid) as string
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
await interaction.editReply({
embeds: [{

View File

@@ -76,7 +76,7 @@ export default {
}]
})
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
const player = (await getPlayer(uuid)) as IPlayerData
if (!player) {
interaction.editReply({

View File

@@ -34,7 +34,7 @@ export default {
}
const ign = await getIGN(verifyData.uuid)
const head = await getHeadURL(ign!)
const head = getHeadURL(ign!)
await interaction.editReply({
embeds: [{

View File

@@ -40,7 +40,7 @@ export default {
}
const ign = (await getIGN(verifiedUser.uuid)) as string
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
await interaction.editReply({
embeds: [{

View File

@@ -31,7 +31,7 @@ export default {
}
const ign = player?.playername || ""
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
const rank2 = player.newPackageRank
const monthlyRank = player.monthlyPackageRank

View File

@@ -48,7 +48,7 @@ export default {
}]
})
const head = await getHeadURL(ign)
const head = getHeadURL(ign)
const player = await getPlayer(uuid)
if (!player) {
interaction.editReply({

View File

@@ -1,9 +1,7 @@
// dprint-ignore-file
export interface IGuild {
data: {
success: boolean
guild: IGuildData
}
success: boolean
guild: IGuildData
}
export interface IGuildData {

View File

@@ -1,9 +1,7 @@
// dprint-ignore-file
export interface IPlayer {
data: {
success: boolean
player: IPlayerData
}
success: boolean
player: IPlayerData
}
export interface IPlayerData {

View File

@@ -1,4 +1,4 @@
import fetch from "axios"
import axios from "axios"
import { IPlayer, IPlayerData } from "~/interfaces"
import { IGuild, IGuildData } from "~/interfaces"
import env from "~/utils/Env.js"
@@ -10,25 +10,21 @@ const guild = "https://api.hypixel.net/guild"
const minotar = "https://minotar.net/helm/"
type GuildQueryType = "player" | "name" | "id"
type Profile = {
data: {
id: string
name: string
}
type UUIDData = {
id: string
name: string
}
type Profile2 = {
data: {
id: string
name: string
properties: { name: string, value: string }[]
profileActions: []
}
type IGNData = {
id: string
name: string
properties: { name: string, value: string }[]
profileActions: []
}
async function getUUID(ign: string): Promise<string | null> {
try {
const req: Profile = await fetch(mojang + ign)
const req = await axios.get<UUIDData>(mojang + ign)
return req.data.id
// eslint-disable-next-line @typescript-eslint/no-unused-vars
} catch (err) {
@@ -38,7 +34,7 @@ async function getUUID(ign: string): Promise<string | null> {
async function getIGN(uuid: string): Promise<string | null> {
try {
const req: Profile2 = await fetch(mojanguuid + uuid)
const req = await axios.get<IGNData>(mojanguuid + uuid)
return req.data.name
// eslint-disable-next-line @typescript-eslint/no-unused-vars
} catch (err) {
@@ -47,42 +43,49 @@ async function getIGN(uuid: string): Promise<string | null> {
}
async function getPlayer(uuid: string): Promise<IPlayerData | null> {
const playerReq: IPlayer = await fetch(hypixel, {
params: {
uuid: uuid
},
headers: {
"API-Key": apikey
try {
const req = await axios.get<IPlayer>(hypixel, {
params: {
uuid: uuid
},
headers: {
"API-Key": apikey
}
})
if (!req.data.player) {
return null
}
})
if (!playerReq.data.player) {
return req.data.player
// eslint-disable-next-line @typescript-eslint/no-unused-vars
} catch (err) {
return null
}
return playerReq.data.player
}
async function getGuild(query: string, type?: GuildQueryType): Promise<IGuildData | null> {
const reqType = type ? type : "player"
async function getGuild(query: string, reqType: GuildQueryType = "player"): Promise<IGuildData | null> {
try {
const req = await axios.get<IGuild>(guild, {
params: {
[reqType]: query
},
headers: {
"API-Key": apikey
}
})
const guildReq: IGuild = await fetch(guild, {
params: {
[reqType]: query
},
headers: {
"API-Key": apikey
if (!req.data.guild) {
return null
}
})
if (!guildReq.data.guild) {
return req.data.guild
// eslint-disable-next-line @typescript-eslint/no-unused-vars
} catch (err) {
return null
}
return guildReq.data.guild
}
async function getHeadURL(ign: string): Promise<string | null> {
function getHeadURL(ign: string): string {
return minotar + ign
}