Merge branch 'dev' into 'main'

Dev

See merge request illegitimate/illegitimate-bot!163
This commit is contained in:
2024-01-07 16:12:17 +00:00
22 changed files with 470 additions and 665 deletions

View File

@@ -5,8 +5,9 @@ import {
GuildMember,
} from "discord.js"
import { admin, helper } from "../../config/roles.json"
import { color } from "../../config/options.json"
import { color, devMessage } from "../../config/options.json"
import { Command } from "../interfaces"
import logToChannel from "../utils/functions/logtochannel"
export = {
name: "ban",
@@ -110,31 +111,49 @@ export = {
deleteMessageDays: messageDeletionDays,
})
await logToChannel("mod", {
embeds: [{
author: {
name: mod.user.username,
icon_url: mod.user.avatarURL({ forceStatic: false }) || undefined,
},
title: "Member Banned",
description: `
**User:** ${userMention(member.user.id)}
**Mod:** ${userMention(mod.user.id)}
**Reason:** ${reason}
**Messages Deleted:** ${messageDeletionDays} days
`,
color: embedColor,
thumbnail: {
url: mod.user.avatarURL({ forceStatic: false }) || "",
},
footer: {
text: "ID: " + member.user.id,
icon_url:
member.user.avatarURL({ forceStatic: false }) ||
undefined,
},
timestamp: new Date().toISOString(),
}]
})
await interaction.editReply({
embeds: [
{
title: "Member Banned",
description:
"**User:** " +
userMention(member.user.id) +
"\n" +
"**Reason:** " +
reason +
"\n" +
"**Moderator:** " +
mod.user.username +
"\n" +
"**Messages Deleted:** " +
messageDeletionDays +
" days",
"**User:** " + userMention(member.user.id) + "\n" +
"**Reason:** " + reason + "\n" +
"**Messages Deleted:** " + messageDeletionDays + " days",
color: embedColor,
footer: {
text: "ID: " + member.user.id,
icon_url:
member.user.avatarURL({ forceStatic: false }) ||
undefined,
thumbnail: {
url: member.user.avatarURL({ forceStatic: false }) || "",
},
footer: {
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
text: interaction.guild!.name + " | " + devMessage,
},
timestamp: new Date().toISOString(),
},
],
})

View File

@@ -306,9 +306,7 @@ export = {
},
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: true,
})!,
icon_url: interaction.guild!.iconURL({ forceStatic: true, }) || undefined,
},
fields: statsFields,
},

View File

@@ -2,9 +2,12 @@ import {
SlashCommandBuilder,
PermissionFlagsBits,
TextChannel,
channelMention,
userMention,
} from "discord.js"
import { color } from "../../config/options.json"
import { Command } from "../interfaces"
import logToChannel from "../utils/functions/logtochannel"
export = {
name: "clear",
@@ -32,12 +35,12 @@ export = {
const channel = interaction.channel as TextChannel
const embedColor = Number(color.replace("#", "0x"))
if (!amount || amount < 1 || amount > 100) {
if (amount < 1 || amount > 100) {
await interaction.editReply({
embeds: [
{
description:
"Please provide an amount of messages to clear",
"Please provide an amount of messages to clear between 1 and 100.",
color: embedColor,
},
],
@@ -56,6 +59,30 @@ export = {
await channel.bulkDelete(messagesToDelete, true)
await logToChannel("mod", {
embeds: [{
author: {
name: interaction.user.username,
icon_url: interaction.user.avatarURL({ forceStatic: false }) || undefined,
},
title: "Messages Cleared",
description: `
**Channel:** ${channelMention(channel.id)}
**Amount:** \`${messages.size}\` messages
**Mod:** ${userMention(interaction.user.id)}
`,
color: embedColor,
thumbnail: {
url: interaction.user.avatarURL({ forceStatic: false }) || "",
},
footer: {
text: "ID: " + channel.id,
icon_url: interaction.guild!.iconURL({ forceStatic: false }) || undefined,
},
timestamp: new Date().toISOString()
}]
})
await interaction.editReply({
embeds: [
{

View File

@@ -8,6 +8,8 @@ import { color, devMessage } from "../../config/options.json"
import verify = require("../schemas/verifySchema")
import { Command } from "../interfaces"
import roleManage from "../utils/functions/rolesmanage"
import logToChannel from "../utils/functions/logtochannel"
import { getIGN } from "../utils/Hypixel"
export = {
name: "forceunverify",
@@ -32,6 +34,7 @@ export = {
const member = interaction.options.getMember("user") as GuildMember
const embedColor = Number(color.replace("#", "0x"))
const verifiedUser = await verify.findOne({ userID: member.user.id })
const mod = interaction.user
if (!verifiedUser) {
return interaction.reply({
@@ -43,10 +46,38 @@ export = {
],
})
}
await verify.findOneAndDelete({ userID: member.user.id })
const uuid = verifiedUser.uuid
const ign = await getIGN(uuid)
await verify.findOneAndDelete({ userID: member.user.id })
await member.roles.remove(roleManage("all").rolesToRemove, "User force unverified by " + interaction.user.username)
await logToChannel("mod", {
embeds: [{
title: "Force Unverified",
author: {
name: mod.username,
icon_url: mod.avatarURL({ forceStatic: false }) || undefined,
},
description: `
**User:** ${userMention(member.user.id)}
**Mod:** ${userMention(mod.id)}
**IGN:** \`${ign}\`
**UUID:** \`${uuid}\`
`,
color: embedColor,
thumbnail: {
url: mod.avatarURL({ forceStatic: false }) || "",
},
footer: {
icon_url: member.user.avatarURL({ forceStatic: false }) || undefined,
text: "ID: " + member.user.id,
},
timestamp: new Date().toISOString(),
}]
})
await interaction.reply({
embeds: [
{
@@ -56,9 +87,7 @@ export = {
color: embedColor,
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
},
},
],

View File

@@ -114,9 +114,8 @@ export = {
if (responseGuildID === hypixelGuildID) {
const GuildMembers = guild!.members
const guildRank = GuildMembers.find(
member => member.uuid === verifyData.uuid,
)!.rank
const guildRank = GuildMembers.find( member => member.uuid === verifyData.uuid)!.rank
let replyRank: string | null = null
await user.roles.add(roleManage("default").rolesToAdd, "User was force updated.")
@@ -124,181 +123,60 @@ export = {
const roles = roleManage("gm")
await user.roles.remove(roles.rolesToRemove, "User was force updated.")
await user.roles.add(roles.rolesToAdd, "User was force updated.")
await interaction.editReply({
embeds: [
{
description:
usermentioned +
"'s rank has been updated to `Guild Master`",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Guild Master"
}
if (guildRank === "Manager") {
const roles = roleManage("manager")
await user.roles.remove(roles.rolesToRemove, "User was force updated.")
await user.roles.add(roles.rolesToAdd, "User was force updated.")
await interaction.editReply({
embeds: [
{
description:
usermentioned +
"'s rank has been updated to `Manager`",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Manager"
}
if (guildRank === "Moderator") {
const roles = roleManage("moderator")
await user.roles.remove(roles.rolesToRemove, "User was force updated.")
await user.roles.add(roles.rolesToAdd, "User was force updated.")
await interaction.editReply({
embeds: [
{
description:
usermentioned +
"'s rank has been updated to `Moderator`",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Moderator"
}
if (guildRank === "Beast") {
const roles = roleManage("beast")
await user.roles.remove(roles.rolesToRemove, "User was force updated.")
await user.roles.add(roles.rolesToAdd, "User was force updated.")
await interaction.editReply({
embeds: [
{
description:
usermentioned +
"'s rank has been updated to `Beast`.",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Beast"
}
if (guildRank === "Elite") {
const roles = roleManage("elite")
await user.roles.remove(roles.rolesToRemove, "User was force updated.")
await user.roles.add(roles.rolesToAdd, "User was force updated.")
await interaction.editReply({
embeds: [
{
description:
usermentioned +
"'s rank has been updated to `Elite`.",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Elite"
}
if (guildRank === "Member") {
const roles = roleManage("member")
await user.roles.remove(roles.rolesToRemove, "User was force updated.")
await user.roles.add(roles.rolesToAdd, "User was force updated.")
await interaction.editReply({
embeds: [
{
description:
usermentioned +
"'s rank has been updated to `Member`.",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Member"
}
await interaction.editReply({
embeds: [
{
description:
usermentioned + " was given the the " + replyRank + " role.",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
},
},
],
})
}
},
} as Command

View File

@@ -2,6 +2,7 @@ import {
SlashCommandBuilder,
PermissionFlagsBits,
GuildMember,
userMention,
} from "discord.js"
import { getUUID, getPlayer, getGuild, getHeadURL } from "../utils/Hypixel"
import { color, hypixelGuildID, devMessage } from "../../config/options.json"
@@ -9,6 +10,7 @@ import verify = require("../schemas/verifySchema")
import mongoose from "mongoose"
import roleManage from "../utils/functions/rolesmanage"
import { Command } from "../interfaces"
import logToChannel from "../utils/functions/logtochannel"
export = {
name: "forceverify",
@@ -180,6 +182,31 @@ export = {
await newVerify.save()
await logToChannel("mod", {
embeds: [{
author: {
name: modName,
icon_url: mod.avatarURL({ forceStatic: false }) || undefined,
},
title: "Force Verified",
description: `
**User:** ${userMention(user.id)}
**Mod:** ${userMention(mod.id)}
**IGN:** \`${player.displayname}\`
**UUID:** \`${uuid}\`
`,
color: embedColor,
thumbnail: {
url: mod.avatarURL({ forceStatic: false }) || "",
},
footer: {
icon_url: user.user.avatarURL({ forceStatic: false }) || undefined,
text: "ID: " + user.user.id
},
timestamp: new Date().toISOString(),
}]
})
await interaction.editReply({
embeds: [
{
@@ -195,10 +222,7 @@ export = {
url: head!,
},
footer: {
icon_url:
interaction.guild!.iconURL({
forceStatic: false,
}) || undefined,
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
text: interaction.guild!.name + " | " + devMessage,
},
},

View File

@@ -66,12 +66,10 @@ export = {
fields: commandList,
color: embedColor,
thumbnail: {
url: interaction.guild!.iconURL({ forceStatic: true })!,
url: interaction.guild!.iconURL({ forceStatic: true }) || "",
},
footer: {
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
text: interaction.guild!.name + " | " + devMessage,
},
},

View File

@@ -32,9 +32,7 @@ export = {
color: embedColor,
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
},
image: {
url: instructionsgif,

View File

@@ -5,8 +5,9 @@ import {
GuildMember,
} from "discord.js"
import { admin, helper } from "../../config/roles.json"
import { color } from "../../config/options.json"
import { color, devMessage } from "../../config/options.json"
import { Command } from "../interfaces"
import logToChannel from "../utils/functions/logtochannel"
export = {
name: "kick",
@@ -35,18 +36,10 @@ export = {
async execute(interaction) {
await interaction.deferReply()
const member = interaction.options.getMember(
"member",
) as GuildMember | null
const reason =
interaction.options.getString("reason") ?? "No reason provided."
const member = interaction.options.getMember( "member",) as GuildMember
const reason = interaction.options.getString("reason") ?? "No reason provided."
const embedColor = Number(color.replace("#", "0x"))
if (!member) {
await interaction.editReply("You must specify a member.")
return
}
const mod = await interaction.guild!.members.fetch(interaction.user.id)
const memberRoles = member.roles.cache.map(role => role.id)
const modRoles = mod.roles.cache.map(role => role.id)
@@ -85,27 +78,45 @@ export = {
await member.kick(reason + ` - ${mod.user.username}`)
await logToChannel("mod", {
embeds: [{
author: {
name: mod.user.username,
icon_url: mod.user.avatarURL({ forceStatic: false }) || undefined,
},
title: "Member Kicked",
description: `
**User:** ${userMention(member.user.id)}
**Mod:** ${userMention(mod.user.id)}
**Reason:** ${reason}
`,
color: embedColor,
thumbnail: {
url: mod.user.avatarURL({ forceStatic: false }) || "",
},
footer: {
text: "ID: " + member.user.id,
icon_url: member.user.avatarURL({ forceStatic: false }) || undefined,
},
timestamp: new Date().toISOString(),
}]
})
await interaction.editReply({
embeds: [
{
title: "Member Kicked",
description:
"**User:** " +
userMention(member.user.id) +
"\n" +
"**Reason:** " +
reason +
"\n" +
"**Moderator:** " +
mod.user.username,
description: "**User:** " + userMention(member.user.id) + "\n" +
"**Reason:** " + reason + "\n" +
"**Moderator:** " + mod.user.username,
color: embedColor,
footer: {
text: "ID: " + member.user.id,
icon_url:
member.user.avatarURL({ forceStatic: false }) ||
undefined,
thumbnail: {
url: member.user.avatarURL({ forceStatic: false }) || "",
},
timestamp: new Date().toISOString(),
footer: {
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
text: interaction.guild!.name + " | " + devMessage,
}
},
],
})

View File

@@ -3,15 +3,16 @@ import {
PermissionFlagsBits,
userMention,
} from "discord.js"
import { color } from "../../config/options.json"
import { color, devMessage } from "../../config/options.json"
import waitinglistSchema = require("../schemas/waitinglistSchema")
import { Command } from "../interfaces"
import logToChannel from "../utils/functions/logtochannel"
export = {
name: "remove",
description: "Remove a person on the waiting list.",
type: "slash",
dev: false,
false: true,
public: false,
data: new SlashCommandBuilder()
@@ -41,7 +42,7 @@ export = {
const mod = interaction.user!
const embedColor = Number(color.replace("#", "0x"))
const waitinglist = await waitinglistSchema.findOne({ UserID: user.id })
const waitinglist = await waitinglistSchema.findOne({ userID: user.id })
if (!waitinglist) {
await interaction.editReply({
@@ -57,25 +58,44 @@ export = {
return
}
await waitinglistSchema.findOneAndDelete({ UserID: user.id })
await waitinglistSchema.findOneAndDelete({ userID: user.id })
await logToChannel("mod", {
embeds: [{
author: {
name: mod.username,
icon_url: mod.avatarURL({ forceStatic: false }) || undefined,
},
title: "Waiting List - Remove User",
description: `
**User:** ${userMention(user.id)}
**Reason:** ${reason}
**Mod:** ${userMention(mod.id)}
`,
color: embedColor,
thumbnail: {
url: mod.avatarURL({ forceStatic: false }) || "",
},
footer: {
icon_url: user.avatarURL({ forceStatic: false }) || undefined,
text: "ID: " + user.id,
},
timestamp: new Date().toISOString()
}]
})
await interaction.editReply({
embeds: [
{
title: "Waiting List - Remove User",
description:
userMention(user.id) +
" has been removed from the waiting list.\n" +
"**Reason:** `" +
reason +
"`\n" +
"**Moderator:** " +
userMention(mod.id),
"**User:** " + userMention(user.id) + "\n" +
"**Reason:** `" + reason + "`",
color: embedColor,
footer: {
text: "User ID: " + user.id,
icon_url: user.displayAvatarURL({ forceStatic: false }),
},
timestamp: new Date().toISOString(),
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({ forceStatic: false }) || undefined,
}
},
],
})

View File

@@ -35,9 +35,7 @@ export = {
color: embedColor,
thumbnail: {
url:
interaction?.guild?.iconURL({
forceStatic: false,
}) || "",
interaction.guild!.iconURL({ forceStatic: false, }) || "",
},
fields: [
{
@@ -72,10 +70,7 @@ export = {
],
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url:
interaction.guild!.iconURL({
forceStatic: false,
}) || undefined,
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
},
},
],

View File

@@ -46,15 +46,11 @@ export = {
description: message,
color: embedColor,
thumbnail: {
url: interaction.guild!.iconURL({
forceStatic: false,
})!,
url: interaction.guild!.iconURL({ forceStatic: false, }) || "",
},
footer: {
text: interaction.guild!.id + " | " + devMessage,
icon_url:
interaction.guild!.iconURL({ forceStatic: true }) ||
undefined,
icon_url: interaction.guild!.iconURL({ forceStatic: true }) || undefined,
},
},
],
@@ -67,10 +63,7 @@ export = {
color: embedColor,
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url:
interaction.guild!.iconURL({
forceStatic: false,
}) || undefined,
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
},
},
],

View File

@@ -2,8 +2,11 @@ import {
SlashCommandBuilder,
PermissionFlagsBits,
userMention,
GuildMember,
} from "discord.js"
import { color, devMessage } from "../../config/options.json"
import { Command } from "../interfaces"
import logToChannel from "../utils/functions/logtochannel"
export = {
name: "setnick",
@@ -31,9 +34,9 @@ export = {
.setDMPermission(false),
async execute(interaction) {
const user = interaction.options.getUser("user")!
const member = interaction.options.getMember("user") as GuildMember
const nickname = interaction.options.getString("nickname")
const member = await interaction.guild!.members.fetch(user.id)
const embedColor = Number(color.replace("#", "0x"))
if (!member.manageable) {
interaction.reply({
@@ -45,12 +48,39 @@ export = {
await member.setNickname(nickname, `Set by ${interaction.user.tag}`)
await logToChannel("mod", {
embeds: [{
author: {
name: interaction.user.username,
icon_url: interaction.user.avatarURL({ forceStatic: false }) || undefined,
},
title: "Nickname",
description: `
**User:** ${userMention(member.id)}
**Nickname:** ${nickname}
**Moderator:** ${userMention(interaction.user.id)}
`,
color: embedColor,
thumbnail: {
url: interaction.user.avatarURL({ forceStatic: false }) || "",
},
footer: {
text: "ID: " + member.user.id,
icon_url: member.user.avatarURL({ forceStatic: false }) || undefined,
},
timestamp: new Date().toISOString()
}]
})
await interaction.reply({
content:
"Set the nickname of " +
userMention(member.id) +
" to " +
nickname,
embeds: [{
description: `Successfully set the nickname of ${userMention(member.id)} to ${nickname}`,
color: embedColor,
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({ forceStatic: false }) || undefined,
}
}],
ephemeral: true,
})
},

View File

@@ -96,206 +96,81 @@ export = {
async execute(interaction) {
const subcommand = interaction.options.getSubcommand()
const channel = interaction.options.getChannel("channel") as TextChannel
const embedColor = Number(color.replace("#", "0x"))
let title: string = ""
let description: string = ""
let customId: string = ""
let label: string = ""
let emoji: string = ""
if (subcommand === "sendguildapplication") {
const channel = interaction.options.getChannel("channel") as TextChannel
await channel.send({
embeds: [
{
title: "Guild Application",
description:
"You can apply for the guild by clicking the button below.",
color: embedColor,
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url:
interaction.guild!.iconURL({
forceStatic: false,
}) || undefined,
},
thumbnail: {
url:
interaction.guild!.iconURL({
forceStatic: false,
}) || "",
},
},
],
components: [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId("guildapply")
.setLabel("Apply")
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "✅" }),
),
],
})
await interaction.reply({
content: "Message sent",
ephemeral: true,
})
title = "Guild Application"
description = "You can apply for the guild by clicking the button below."
customId = "guildapply"
label = "Apply"
emoji = "✅"
}
if (subcommand === "sendstaffapplication") {
const channel = interaction.options.getChannel("channel") as TextChannel
await channel.send({
embeds: [
{
title: "Staff Application",
description:
"You can apply for the staff team by clicking the button below.",
color: embedColor,
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
thumbnail: {
url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
components: [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId("staffapply")
.setLabel("Apply")
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "✅" }),
),
],
})
await interaction.reply({
content: "Message sent",
ephemeral: true,
})
title = "Staff Application"
description = "You can apply for the staff team by clicking the button below."
customId = "staffapply"
label = "Apply"
emoji = "✅"
}
if (subcommand === "sendinactivityapplication") {
const channel = interaction.options.getChannel("channel") as TextChannel
await channel.send({
embeds: [
{
title: "Inactivity Log",
description:
"You can send an inactivity log by clicking the button below.",
color: embedColor,
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
thumbnail: {
url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
components: [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId("guildinactivitylog")
.setLabel("Submit")
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "✅" }),
),
],
})
await interaction.reply({
content: "Message sent",
ephemeral: true,
})
title = "Inactivity Log"
description = "You can send an inactivity log by clicking the button below."
customId = "guildinactivitylog"
label = "Submit"
emoji = "✅"
}
if (subcommand === "sendverfiymessage") {
const channel = interaction.options.getChannel("channel") as TextChannel
await channel.send({
embeds: [
{
title: "Verification",
description:
"You can verify by clicking the button below.",
color: embedColor,
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
thumbnail: {
url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
components: [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId("verify")
.setLabel("Verify")
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "✅" }),
),
],
})
await interaction.reply({
content: "Message sent",
ephemeral: true,
})
title = "Verification"
description = "You can verify by clicking the button below."
customId = "verify"
label = "Verify"
emoji = "✅"
}
if (subcommand === "sendwaitinglistmessage") {
const channel = interaction.options.getChannel("channel") as TextChannel
await channel.send({
embeds: [
{
title: "Waiting List",
description:
"The people below were accepted into the guild\n" +
"Try to invite them in order.",
color: embedColor,
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
thumbnail: {
url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
components: [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId("waitinglistupdate")
.setLabel("Update")
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: "🔄" }),
),
],
})
await interaction.reply({
content: "Message sent",
ephemeral: true,
})
title = "Waiting List"
description = "The people below were accepted into the guild\n" + "Try to invite them in order.",
customId = "waitinglistupdate"
label = "Update"
emoji = "🔄"
}
await channel.send({
embeds: [{
title: title,
description: description,
color: embedColor,
thumbnail: {
url: interaction.guild!.iconURL({ forceStatic: false }) || "",
},
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({ forceStatic: false }) || undefined,
}
}],
components: [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId(customId)
.setLabel(label)
.setStyle(ButtonStyle.Primary)
.setEmoji({ name: emoji })
)
]
})
await interaction.reply({
content: "Message sent",
ephemeral: true,
})
},
} as Command

View File

@@ -3,9 +3,12 @@ import {
PermissionFlagsBits,
ChannelType,
TextChannel,
channelMention,
userMention,
} from "discord.js"
import { color, devMessage } from "../../config/options.json"
import { Command } from "../interfaces"
import logToChannel from "../utils/functions/logtochannel"
export = {
name: "slowmode",
@@ -60,6 +63,30 @@ export = {
return
}
await logToChannel("mod", {
embeds: [{
author: {
name: interaction.user.username,
icon_url: interaction.user.avatarURL({ forceStatic: false }) || undefined,
},
title: "Slowmode Update",
description: `
**Channel:** ${channelMention(channel.id)}
**Slowmode:** ${seconds} seconds
**Mod:** ${userMention(interaction.user.id)}
`,
color: embedColor,
thumbnail: {
url: interaction.user.avatarURL({ forceStatic: false }) || "",
},
footer: {
icon_url: interaction.guild!.iconURL({ forceStatic: false }) || undefined,
text: " ID: " + channel.id
},
timestamp: new Date().toISOString()
}]
})
await interaction.editReply({
embeds: [
{

View File

@@ -61,21 +61,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: false })
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,
},
},
],

View File

@@ -5,9 +5,10 @@ import {
ChatInputCommandInteraction,
GuildMember,
} from "discord.js"
import { color } from "../../config/options.json"
import { color, devMessage } from "../../config/options.json"
import { Command } from "../interfaces"
import ms from "ms"
import logToChannel from "../utils/functions/logtochannel"
const command: Command = {
name: "timeout",
@@ -117,69 +118,61 @@ const command: Command = {
return
}
let title: string = ""
let description: string = ""
let timeouttime: number | null = 0
if (target.isCommunicationDisabled()) {
if (time === 0) {
await target.timeout(null, reason)
await interaction.editReply({
embeds: [
{
description:
"Removed timeout of " +
userMention(target.id) +
" for " +
reason,
color: embedColor,
footer: {
text: "ID: " + target.id,
icon_url: target.avatarURL() || undefined,
},
timestamp: new Date().toISOString(),
},
],
})
return
title = "Timeout Removed"
description = "Removed timeout of " + userMention(target.id) + " for " + reason,
timeouttime = null
} else {
title = "Timeout Updated"
description = "Updated timeout of " + userMention(target.id) + " to " + prettyTime + " for " + reason,
timeouttime = time
}
await target.timeout(time, reason)
await interaction.editReply({
embeds: [
{
description:
"Updated timeout of " +
userMention(target.id) +
" to " +
prettyTime +
" for " +
reason,
color: embedColor,
footer: {
text: "ID: " + target.id,
icon_url: target.avatarURL() || undefined,
},
timestamp: new Date().toISOString(),
},
],
})
return
} else {
title = "Member Timed Out"
description = "Timed out " + userMention(target.id) + " for " + prettyTime + " for " + reason,
timeouttime = time
}
await target.timeout(time, reason)
await target.timeout(timeouttime, reason)
await logToChannel("mod", {
embeds: [{
author: {
name: mod.user.username,
icon_url: mod.user.avatarURL({ forceStatic: false }) || undefined,
},
title: title,
description: `
**User:** ${userMention(target.id)}
${timeouttime === null ? "**Time:** `None`" : "**Time:** `" + prettyTime + "`"}
**Reason:** \`${reason}\`
**Mod:** ${userMention(mod.id)}
`,
color: embedColor,
thumbnail: {
url: mod.user.avatarURL({ forceStatic: false }) || "",
},
footer: {
text: "ID: " + target.id,
icon_url: target.user.avatarURL({ forceStatic: false }) || undefined,
},
timestamp: new Date().toISOString()
}]
})
await interaction.editReply({
embeds: [
{
description:
"Timed out " +
userMention(target.id) +
" for " +
prettyTime +
" for " +
reason,
description: description,
color: embedColor,
footer: {
text: "ID: " + target.id,
icon_url: target.avatarURL() || undefined,
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({ forceStatic: false }) || undefined,
},
timestamp: new Date().toISOString(),
},
],
})

View File

@@ -4,8 +4,9 @@ import {
userMention,
User,
} from "discord.js"
import { color } from "../../config/options.json"
import { color, devMessage } from "../../config/options.json"
import { Command } from "../interfaces"
import logToChannel from "../utils/functions/logtochannel"
export = {
name: "unban",
@@ -37,11 +38,10 @@ export = {
await interaction.deferReply()
const userid = interaction.options.getString("user")!
const reason =
interaction.options.getString("reason") || "No reason provided"
const reason = interaction.options.getString("reason") || "No reason provided"
const mod = interaction.user
const embedColor = Number(color.replace("#", "0x"))
let user: User | null
let user: User
if (userid === "none") {
await interaction.editReply({
@@ -66,34 +66,53 @@ export = {
},
],
})
return
}
await interaction.guild!.members.unban(user!.id, reason)
await interaction.guild!.members.unban(user.id, reason)
await logToChannel("mod", {
embeds: [
{
author: {
name: mod.username,
icon_url: mod.avatarURL({ forceStatic: false }) || undefined,
},
title: "Member Unbanned",
description: `
**User:** ${userMention(user!.id)}
**Mod:** ${userMention(mod.id)}
**Reason:** ${reason}
`,
color: embedColor,
thumbnail: {
url: mod.avatarURL({ forceStatic: false }) || "",
},
footer: {
text: "ID: " + user!.id,
icon_url: user.avatarURL({ forceStatic: false}) || undefined,
},
timestamp: new Date().toISOString(),
},
],
})
await interaction.editReply({
embeds: [
{
title: "User unbanned",
description:
"The user " +
user!.username +
" has been unbanned.\n" +
"**Reason:** `" +
reason +
"`\n" +
"**Moderator:** " +
userMention(mod.id),
"The user " + user!.username + " has been unbanned.\n" +
"**Reason:** `" + reason + "`\n" +
"**Moderator:** " + userMention(mod.id),
color: embedColor,
thumbnail: {
url: user!.avatarURL({ forceStatic: false }) || "",
},
footer: {
text: "ID: " + user!.id,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
text: interaction.guild!.name + " | " + devMessage,
},
timestamp: new Date().toISOString(),
},
],
})

View File

@@ -89,9 +89,8 @@ export = {
if (guildID === hypixelGuildID) {
const GuildMembers = guild!.members
const guildRank = GuildMembers.find(
member => member.uuid === verifyData.uuid,
)!.rank
const guildRank = GuildMembers.find( member => member.uuid === verifyData.uuid)!.rank
let replyRank: string | null = null
await user.roles.add(roleManage("default").rolesToAdd, "User used the update command")
@@ -99,175 +98,59 @@ export = {
const roles = roleManage("gm")
await user.roles.remove(roles.rolesToRemove, "User used the update command")
await user.roles.add(roles.rolesToAdd, "User used the update command")
await interaction.editReply({
embeds: [
{
description:
"Your rank has been updated to `Guild Master`",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Guild Master"
}
if (guildRank === "Manager") {
const roles = roleManage("manager")
await user.roles.remove(roles.rolesToRemove, "User used the update command")
await user.roles.add(roles.rolesToAdd, "User used the update command")
await interaction.editReply({
embeds: [
{
description:
"Your rank has been updated to `Manager`",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Manager"
}
if (guildRank === "Moderator") {
const roles = roleManage("moderator")
await user.roles.remove(roles.rolesToRemove, "User used the update command")
await user.roles.add(roles.rolesToAdd, "User used the update command")
await interaction.editReply({
embeds: [
{
description:
"Your rank has been updated to `Moderator`",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Moderator"
}
if (guildRank === "Beast") {
const roles = roleManage("beast")
await user.roles.remove(roles.rolesToRemove, "User used the update command")
await user.roles.add(roles.rolesToAdd, "User used the update command")
await interaction.editReply({
embeds: [
{
description:
"Your rank has been updated to `Beast`.",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Beast"
}
if (guildRank === "Elite") {
const roles = roleManage("elite")
await user.roles.remove(roles.rolesToRemove, "User used the update command")
await user.roles.add(roles.rolesToAdd, "User used the update command")
await interaction.editReply({
embeds: [
{
description:
"Your rank has been updated to `Elite`.",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Elite"
}
if (guildRank === "Member") {
const roles = roleManage("member")
await user.roles.remove(roles.rolesToRemove, "User used the update command")
await user.roles.add(roles.rolesToAdd, "User used the update command")
await interaction.editReply({
embeds: [
{
description:
"Your rank has been updated to `Member`.",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text:
interaction.guild!.name +
" | " +
devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: false,
})!,
},
},
],
})
return
replyRank = "Member"
}
await interaction.editReply({
embeds: [
{
description: "Updated your roles to `" + replyRank + "`",
color: embedColor,
thumbnail: {
url: head!,
},
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
},
},
],
})
}
},
} as Command

View File

@@ -60,10 +60,7 @@ export = {
},
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url:
interaction.guild?.iconURL({
forceStatic: false,
}) || undefined,
icon_url: interaction.guild!.iconURL({ forceStatic: false, }) || undefined,
},
},
],

View File

@@ -233,7 +233,7 @@ export = {
"`.",
color: embedColor,
thumbnail: {
url: head || "",
url: head!,
},
footer: {
icon_url: interaction.guild!.iconURL() || undefined,

View File

@@ -54,9 +54,7 @@ export = {
},
footer: {
text: interaction.guild!.name + " | " + devMessage,
icon_url: interaction.guild!.iconURL({
forceStatic: true,
})!,
icon_url: interaction.guild!.iconURL({ forceStatic: true, }) || undefined,
},
},
],