Bug fixes and ~~performance~~ typing improvements
diff --git a/src/commands/mod/ban.ts b/src/commands/mod/ban.ts
index 4560c8b..87bfd28 100644
--- a/src/commands/mod/ban.ts
+++ b/src/commands/mod/ban.ts
@@ -1,9 +1,4 @@
-import {
- CommandInteraction,
- GuildMember,
- MessageActionRow,
- MessageButton
-} from "discord.js";
+import { CommandInteraction, GuildMember, MessageActionRow, MessageButton } from "discord.js";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import confirmationMessage from "../../utils/confirmationMessage.js";
import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
@@ -15,12 +10,7 @@
builder
.setName("ban")
.setDescription("Bans a user from the server")
- .addUserOption((option) =>
- option
- .setName("user")
- .setDescription("The user to ban")
- .setRequired(true)
- )
+ .addUserOption((option) => option.setName("user").setDescription("The user to ban").setRequired(true))
.addNumberOption((option) =>
option
.setName("delete")
@@ -43,21 +33,14 @@
.setDescription(
keyValueList({
user: renderUser(interaction.options.getUser("user")),
- reason: reason
- ? "\n> " + (reason ?? "").replaceAll("\n", "\n> ")
- : "*No reason provided*"
+ reason: reason ? "\n> " + (reason ?? "").replaceAll("\n", "\n> ") : "*No reason provided*"
}) +
`The user **will${notify ? "" : " not"}** be notified\n` +
`${addPlurals(
- interaction.options.getInteger("delete")
- ? interaction.options.getInteger("delete")
- : 0,
+ interaction.options.getInteger("delete") ? interaction.options.getInteger("delete") : 0,
"day"
)} of messages will be deleted\n\n` +
- `Are you sure you want to ban <@!${
- (interaction.options.getMember("user") as GuildMember)
- .id
- }>?`
+ `Are you sure you want to ban <@!${(interaction.options.getMember("user") as GuildMember).id}>?`
)
.setColor("Danger")
.addReasonButton(reason ?? "")
@@ -66,8 +49,7 @@
if (confirmation.cancelled) return;
if (confirmation.success) break;
if (confirmation.newReason) reason = confirmation.newReason;
- if (confirmation.components)
- notify = confirmation.components.notify.active;
+ if (confirmation.components) notify = confirmation.components.notify.active;
}
if (confirmation.success) {
let dmd = false;
@@ -75,9 +57,7 @@
const config = await client.database.guilds.read(interaction.guild.id);
try {
if (notify) {
- dm = await (
- interaction.options.getMember("user") as GuildMember
- ).send({
+ dm = await (interaction.options.getMember("user") as GuildMember).send({
embeds: [
new EmojiEmbed()
.setEmoji("PUNISH.BAN.RED")
@@ -112,15 +92,8 @@
days: Number(interaction.options.getNumber("delete") ?? 0),
reason: reason ?? "No reason provided"
});
- await client.database.history.create(
- "ban",
- interaction.guild.id,
- member.user,
- interaction.user,
- reason
- );
- const { log, NucleusColors, entry, renderUser, renderDelta } =
- client.logger;
+ await client.database.history.create("ban", interaction.guild.id, member.user, interaction.user, reason);
+ const { log, NucleusColors, entry, renderUser, renderDelta } = client.logger;
const data = {
meta: {
type: "memberBan",
@@ -133,22 +106,10 @@
list: {
memberId: entry(member.user.id, `\`${member.user.id}\``),
name: entry(member.user.id, renderUser(member.user)),
- banned: entry(
- new Date().getTime(),
- renderDelta(new Date().getTime())
- ),
- bannedBy: entry(
- interaction.user.id,
- renderUser(interaction.user)
- ),
- reason: entry(
- reason,
- reason ? `\n> ${reason}` : "*No reason provided.*"
- ),
- accountCreated: entry(
- member.user.createdAt,
- renderDelta(member.user.createdAt)
- ),
+ banned: entry(new Date().getTime(), renderDelta(new Date().getTime())),
+ bannedBy: entry(interaction.user.id, renderUser(interaction.user)),
+ reason: entry(reason, reason ? `\n> ${reason}` : "*No reason provided.*"),
+ accountCreated: entry(member.user.createdAt, renderDelta(member.user.createdAt)),
serverMemberCount: interaction.guild.memberCount
},
hidden: {
@@ -162,9 +123,7 @@
new EmojiEmbed()
.setEmoji("PUNISH.BAN.RED")
.setTitle("Ban")
- .setDescription(
- "Something went wrong and the user was not banned"
- )
+ .setDescription("Something went wrong and the user was not banned")
.setStatus("Danger")
],
components: []
@@ -178,10 +137,7 @@
new EmojiEmbed()
.setEmoji(`PUNISH.BAN.${failed ? "YELLOW" : "GREEN"}`)
.setTitle("Ban")
- .setDescription(
- "The member was banned" +
- (failed ? ", but could not be notified" : "")
- )
+ .setDescription("The member was banned" + (failed ? ", but could not be notified" : ""))
.setStatus(failed ? "Warning" : "Success")
],
components: []
@@ -204,30 +160,24 @@
const member = interaction.member as GuildMember;
const me = interaction.guild.me!;
const apply = interaction.options.getMember("user") as GuildMember;
- if (member === null || me === null || apply === null)
- throw "That member is not in the server";
+ if (member === null || me === null || apply === null) throw "That member is not in the server";
const memberPos = member.roles ? member.roles.highest.position : 0;
const mePos = me.roles ? me.roles.highest.position : 0;
const applyPos = apply.roles ? apply.roles.highest.position : 0;
// Do not allow banning the owner
- if (member.id === interaction.guild.ownerId)
- throw "You cannot ban the owner of the server";
+ if (member.id === interaction.guild.ownerId) throw "You cannot ban the owner of the server";
// Check if Nucleus can ban the member
- if (!(mePos > applyPos))
- throw "I do not have a role higher than that member";
+ if (!(mePos > applyPos)) throw "I do not have a role higher than that member";
// Check if Nucleus has permission to ban
- if (!me.permissions.has("BAN_MEMBERS"))
- throw "I do not have the *Ban Members* permission";
+ if (!me.permissions.has("BAN_MEMBERS")) throw "I do not have the *Ban Members* permission";
// Do not allow banning Nucleus
if (member.id === interaction.guild.me.id) throw "I cannot ban myself";
// Allow the owner to ban anyone
if (member.id === interaction.guild.ownerId) return true;
// Check if the user has ban_members permission
- if (!member.permissions.has("BAN_MEMBERS"))
- throw "You do not have the *Ban Members* permission";
+ if (!member.permissions.has("BAN_MEMBERS")) throw "You do not have the *Ban Members* permission";
// Check if the user is below on the role list
- if (!(memberPos > applyPos))
- throw "You do not have a role higher than that member";
+ if (!(memberPos > applyPos)) throw "You do not have a role higher than that member";
// Allow ban
return true;
};
diff --git a/src/commands/mod/info.ts b/src/commands/mod/info.ts
index 9837273..af30989 100644
--- a/src/commands/mod/info.ts
+++ b/src/commands/mod/info.ts
@@ -18,10 +18,7 @@
.setName("info")
.setDescription("Shows moderator information about a user")
.addUserOption((option) =>
- option
- .setName("user")
- .setDescription("The user to get information about")
- .setRequired(true)
+ option.setName("user").setDescription("The user to get information about").setRequired(true)
);
const types = {
@@ -39,11 +36,9 @@
};
function historyToString(history: HistorySchema) {
- let s = `${getEmojiByName(types[history.type].emoji)} ${
- history.amount ? history.amount + " " : ""
- }${types[history.type].text} on <t:${Math.round(
- history.occurredAt.getTime() / 1000
- )}:F>`;
+ let s = `${getEmojiByName(types[history.type].emoji)} ${history.amount ? history.amount + " " : ""}${
+ types[history.type].text
+ } on <t:${Math.round(history.occurredAt.getTime() / 1000)}:F>`;
if (history.moderator) {
s += ` by <@${history.moderator}>`;
}
@@ -71,13 +66,8 @@
return this.content.reduce((acc, cur) => acc + cur.rendered.length, 0);
};
generateName = () => {
- const first = Math.round(
- this.content[0].data.occurredAt.getTime() / 1000
- );
- const last = Math.round(
- this.content[this.content.length - 1].data.occurredAt.getTime() /
- 1000
- );
+ const first = Math.round(this.content[0].data.occurredAt.getTime() / 1000);
+ const last = Math.round(this.content[this.content.length - 1].data.occurredAt.getTime() / 1000);
if (first === last) {
return (this.name = `<t:${first}:F>`);
}
@@ -109,22 +99,14 @@
let openFilterPane = false;
while (true) {
if (refresh) {
- history = await client.database.history.read(
- member.guild.id,
- member.id,
- currentYear
- );
- history = history
- .sort((a, b) => b.occurredAt.getTime() - a.occurredAt.getTime())
- .reverse();
+ history = await client.database.history.read(member.guild.id, member.id, currentYear);
+ history = history.sort((a, b) => b.occurredAt.getTime() - a.occurredAt.getTime()).reverse();
if (openFilterPane) {
let tempFilteredTypes = filteredTypes;
if (filteredTypes.length === 0) {
tempFilteredTypes = Object.keys(types);
}
- history = history.filter((h) =>
- tempFilteredTypes.includes(h.type)
- );
+ history = history.filter((h) => tempFilteredTypes.includes(h.type));
}
refresh = false;
}
@@ -132,11 +114,7 @@
if (history.length > 0) {
current = new TimelineSection();
history.forEach((event) => {
- if (
- current.contentLength() + historyToString(event).length >
- 2000 ||
- current.content.length === 5
- ) {
+ if (current.contentLength() + historyToString(event).length > 2000 || current.content.length === 5) {
groups.push(current);
current.generateName();
current = new TimelineSection();
@@ -162,9 +140,7 @@
label: value.text,
value: key,
default: filteredTypes.includes(key),
- emoji: client.emojis.resolve(
- getEmojiByName(value.emoji, "id")
- )
+ emoji: client.emojis.resolve(getEmojiByName(value.emoji, "id"))
}))
)
.setMinValues(1)
@@ -181,22 +157,13 @@
.setLabel((currentYear - 1).toString())
.setEmoji(getEmojiByName("CONTROL.LEFT", "id"))
.setStyle("SECONDARY"),
- new MessageButton()
- .setCustomId("prevPage")
- .setLabel("Previous page")
- .setStyle("PRIMARY"),
- new MessageButton()
- .setCustomId("today")
- .setLabel("Today")
- .setStyle("PRIMARY"),
+ new MessageButton().setCustomId("prevPage").setLabel("Previous page").setStyle("PRIMARY"),
+ new MessageButton().setCustomId("today").setLabel("Today").setStyle("PRIMARY"),
new MessageButton()
.setCustomId("nextPage")
.setLabel("Next page")
.setStyle("PRIMARY")
- .setDisabled(
- pageIndex >= groups.length - 1 &&
- currentYear === new Date().getFullYear()
- ),
+ .setDisabled(pageIndex >= groups.length - 1 && currentYear === new Date().getFullYear()),
new MessageButton()
.setCustomId("nextYear")
.setLabel((currentYear + 1).toString())
@@ -220,13 +187,8 @@
const end =
"\n\nJanuary " +
currentYear.toString() +
- pageIndicator(
- Math.max(groups.length, 1),
- groups.length === 0 ? 1 : pageIndex
- ) +
- (currentYear === new Date().getFullYear()
- ? monthNames[new Date().getMonth()]
- : "December") +
+ pageIndicator(Math.max(groups.length, 1), groups.length === 0 ? 1 : pageIndex) +
+ (currentYear === new Date().getFullYear() ? monthNames[new Date().getMonth()] : "December") +
" " +
currentYear.toString();
if (groups.length > 0) {
@@ -235,22 +197,13 @@
embeds: [
new EmojiEmbed()
.setEmoji("MEMBER.JOIN")
- .setTitle(
- "Moderation history for " + member.user.username
- )
+ .setTitle("Moderation history for " + member.user.username)
.setDescription(
- `**${toRender.name}**\n\n` +
- toRender.content
- .map((c) => c.rendered)
- .join("\n") +
- end
+ `**${toRender.name}**\n\n` + toRender.content.map((c) => c.rendered).join("\n") + end
)
.setStatus("Success")
.setFooter({
- text:
- openFilterPane && filteredTypes.length
- ? "Filters are currently enabled"
- : ""
+ text: openFilterPane && filteredTypes.length ? "Filters are currently enabled" : ""
})
],
components: components
@@ -260,18 +213,11 @@
embeds: [
new EmojiEmbed()
.setEmoji("MEMBER.JOIN")
- .setTitle(
- "Moderation history for " + member.user.username
- )
- .setDescription(
- `**${currentYear}**\n\n*No events*` + "\n\n" + end
- )
+ .setTitle("Moderation history for " + member.user.username)
+ .setDescription(`**${currentYear}**\n\n*No events*` + "\n\n" + end)
.setStatus("Success")
.setFooter({
- text:
- openFilterPane && filteredTypes.length
- ? "Filters are currently enabled"
- : ""
+ text: openFilterPane && filteredTypes.length ? "Filters are currently enabled" : ""
})
],
components: components
@@ -285,9 +231,7 @@
embeds: [
new EmojiEmbed()
.setEmoji("MEMBER.JOIN")
- .setTitle(
- "Moderation history for " + member.user.username
- )
+ .setTitle("Moderation history for " + member.user.username)
.setDescription(m.embeds[0].description)
.setStatus("Danger")
.setFooter({ text: "Message timed out" })
@@ -342,18 +286,11 @@
}
}
-const callback = async (
- interaction: CommandInteraction
-): Promise<void | unknown> => {
+const callback = async (interaction: CommandInteraction): Promise<void | unknown> => {
let m;
const member = interaction.options.getMember("user") as Discord.GuildMember;
await interaction.reply({
- embeds: [
- new EmojiEmbed()
- .setEmoji("NUCLEUS.LOADING")
- .setTitle("Downloading Data")
- .setStatus("Danger")
- ],
+ embeds: [new EmojiEmbed().setEmoji("NUCLEUS.LOADING").setTitle("Downloading Data").setStatus("Danger")],
ephemeral: true,
fetchReply: true
});
@@ -415,9 +352,7 @@
embeds: [
new EmojiEmbed()
.setTitle("Mod notes for " + member.user.username)
- .setDescription(
- "Modal opened. If you can't see it, click back and try again."
- )
+ .setDescription("Modal opened. If you can't see it, click back and try again.")
.setStatus("Success")
.setEmoji("GUILD.TICKET.OPEN")
],
@@ -443,11 +378,7 @@
}
if (out.fields) {
const toAdd = out.fields.getTextInputValue("note") || null;
- await client.database.notes.create(
- member.guild.id,
- member.id,
- toAdd
- );
+ await client.database.notes.create(member.guild.id, member.id, toAdd);
} else {
continue;
}
@@ -460,8 +391,7 @@
const check = (interaction: CommandInteraction) => {
const member = interaction.member as GuildMember;
- if (!member.permissions.has("MODERATE_MEMBERS"))
- throw "You do not have the *Moderate Members* permission";
+ if (!member.permissions.has("MODERATE_MEMBERS")) throw "You do not have the *Moderate Members* permission";
return true;
};
diff --git a/src/commands/mod/kick.ts b/src/commands/mod/kick.ts
index 59c2f81..f10563e 100644
--- a/src/commands/mod/kick.ts
+++ b/src/commands/mod/kick.ts
@@ -1,9 +1,4 @@
-import {
- CommandInteraction,
- GuildMember,
- MessageActionRow,
- MessageButton
-} from "discord.js";
+import { CommandInteraction, GuildMember, MessageActionRow, MessageButton } from "discord.js";
import humanizeDuration from "humanize-duration";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import confirmationMessage from "../../utils/confirmationMessage.js";
@@ -15,16 +10,9 @@
builder
.setName("kick")
.setDescription("Kicks a user from the server")
- .addUserOption((option) =>
- option
- .setName("user")
- .setDescription("The user to kick")
- .setRequired(true)
- );
+ .addUserOption((option) => option.setName("user").setDescription("The user to kick").setRequired(true));
-const callback = async (
- interaction: CommandInteraction
-): Promise<void | unknown> => {
+const callback = async (interaction: CommandInteraction): Promise<void | unknown> => {
const { renderUser } = client.logger;
// TODO:[Modals] Replace this with a modal
let reason = null;
@@ -37,15 +25,10 @@
.setDescription(
keyValueList({
user: renderUser(interaction.options.getUser("user")),
- reason: reason
- ? "\n> " + (reason ?? "").replaceAll("\n", "\n> ")
- : "*No reason provided*"
+ reason: reason ? "\n> " + (reason ?? "").replaceAll("\n", "\n> ") : "*No reason provided*"
}) +
`The user **will${notify ? "" : " not"}** be notified\n\n` +
- `Are you sure you want to kick <@!${
- (interaction.options.getMember("user") as GuildMember)
- .id
- }>?`
+ `Are you sure you want to kick <@!${(interaction.options.getMember("user") as GuildMember).id}>?`
)
.setColor("Danger")
.addReasonButton(reason ?? "")
@@ -64,9 +47,7 @@
const config = await client.database.guilds.read(interaction.guild.id);
try {
if (notify) {
- dm = await (
- interaction.options.getMember("user") as GuildMember
- ).send({
+ dm = await (interaction.options.getMember("user") as GuildMember).send({
embeds: [
new EmojiEmbed()
.setEmoji("PUNISH.KICK.RED")
@@ -96,19 +77,10 @@
dmd = false;
}
try {
- (interaction.options.getMember("user") as GuildMember).kick(
- reason ?? "No reason provided."
- );
+ (interaction.options.getMember("user") as GuildMember).kick(reason ?? "No reason provided.");
const member = interaction.options.getMember("user") as GuildMember;
- await client.database.history.create(
- "kick",
- interaction.guild.id,
- member.user,
- interaction.user,
- reason
- );
- const { log, NucleusColors, entry, renderUser, renderDelta } =
- client.logger;
+ await client.database.history.create("kick", interaction.guild.id, member.user, interaction.user, reason);
+ const { log, NucleusColors, entry, renderUser, renderDelta } = client.logger;
const data = {
meta: {
type: "memberKick",
@@ -121,35 +93,17 @@
list: {
memberId: entry(member.id, `\`${member.id}\``),
name: entry(member.id, renderUser(member.user)),
- joined: entry(
- member.joinedAt,
- renderDelta(member.joinedAt)
- ),
- kicked: entry(
- new Date().getTime(),
- renderDelta(new Date().getTime())
- ),
- kickedBy: entry(
- interaction.user.id,
- renderUser(interaction.user)
- ),
- reason: entry(
- reason,
- reason ? `\n> ${reason}` : "*No reason provided.*"
- ),
+ joined: entry(member.joinedAt, renderDelta(member.joinedAt)),
+ kicked: entry(new Date().getTime(), renderDelta(new Date().getTime())),
+ kickedBy: entry(interaction.user.id, renderUser(interaction.user)),
+ reason: entry(reason, reason ? `\n> ${reason}` : "*No reason provided.*"),
timeInServer: entry(
new Date().getTime() - member.joinedTimestamp,
- humanizeDuration(
- new Date().getTime() - member.joinedTimestamp,
- {
- round: true
- }
- )
+ humanizeDuration(new Date().getTime() - member.joinedTimestamp, {
+ round: true
+ })
),
- accountCreated: entry(
- member.user.createdAt,
- renderDelta(member.user.createdAt)
- ),
+ accountCreated: entry(member.user.createdAt, renderDelta(member.user.createdAt)),
serverMemberCount: member.guild.memberCount
},
hidden: {
@@ -163,9 +117,7 @@
new EmojiEmbed()
.setEmoji("PUNISH.KICK.RED")
.setTitle("Kick")
- .setDescription(
- "Something went wrong and the user was not kicked"
- )
+ .setDescription("Something went wrong and the user was not kicked")
.setStatus("Danger")
],
components: []
@@ -179,10 +131,7 @@
new EmojiEmbed()
.setEmoji(`PUNISH.KICK.${failed ? "YELLOW" : "GREEN"}`)
.setTitle("Kick")
- .setDescription(
- "The member was kicked" +
- (failed ? ", but could not be notified" : "")
- )
+ .setDescription("The member was kicked" + (failed ? ", but could not be notified" : ""))
.setStatus(failed ? "Warning" : "Success")
],
components: []
@@ -205,30 +154,24 @@
const member = interaction.member as GuildMember;
const me = interaction.guild.me!;
const apply = interaction.options.getMember("user") as GuildMember;
- if (member === null || me === null || apply === null)
- throw "That member is not in the server";
+ if (member === null || me === null || apply === null) throw "That member is not in the server";
const memberPos = member.roles ? member.roles.highest.position : 0;
const mePos = me.roles ? me.roles.highest.position : 0;
const applyPos = apply.roles ? apply.roles.highest.position : 0;
// Do not allow kicking the owner
- if (member.id === interaction.guild.ownerId)
- throw "You cannot kick the owner of the server";
+ if (member.id === interaction.guild.ownerId) throw "You cannot kick the owner of the server";
// Check if Nucleus can kick the member
- if (!(mePos > applyPos))
- throw "I do not have a role higher than that member";
+ if (!(mePos > applyPos)) throw "I do not have a role higher than that member";
// Check if Nucleus has permission to kick
- if (!me.permissions.has("KICK_MEMBERS"))
- throw "I do not have the *Kick Members* permission";
+ if (!me.permissions.has("KICK_MEMBERS")) throw "I do not have the *Kick Members* permission";
// Do not allow kicking Nucleus
if (member.id === interaction.guild.me.id) throw "I cannot kick myself";
// Allow the owner to kick anyone
if (member.id === interaction.guild.ownerId) return true;
// Check if the user has kick_members permission
- if (!member.permissions.has("KICK_MEMBERS"))
- throw "You do not have the *Kick Members* permission";
+ if (!member.permissions.has("KICK_MEMBERS")) throw "You do not have the *Kick Members* permission";
// Check if the user is below on the role list
- if (!(memberPos > applyPos))
- throw "You do not have a role higher than that member";
+ if (!(memberPos > applyPos)) throw "You do not have a role higher than that member";
// Allow kick
return true;
};
diff --git a/src/commands/mod/mute.ts b/src/commands/mod/mute.ts
index b430191..dc44e5a 100644
--- a/src/commands/mod/mute.ts
+++ b/src/commands/mod/mute.ts
@@ -1,11 +1,5 @@
import { LoadingEmbed } from "./../../utils/defaultEmbeds.js";
-import Discord, {
- CommandInteraction,
- GuildMember,
- Message,
- MessageActionRow,
- MessageButton
-} from "discord.js";
+import Discord, { CommandInteraction, GuildMember, Message, MessageActionRow, MessageButton } from "discord.js";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
import getEmojiByName from "../../utils/getEmojiByName.js";
@@ -13,29 +7,17 @@
import keyValueList from "../../utils/generateKeyValueList.js";
import humanizeDuration from "humanize-duration";
import client from "../../utils/client.js";
-import {
- areTicketsEnabled,
- create
-} from "../../actions/createModActionTicket.js";
+import { areTicketsEnabled, create } from "../../actions/createModActionTicket.js";
const command = (builder: SlashCommandSubcommandBuilder) =>
builder
.setName("mute")
- .setDescription(
- "Mutes a member, stopping them from talking in the server"
- )
- .addUserOption((option) =>
- option
- .setName("user")
- .setDescription("The user to mute")
- .setRequired(true)
- )
+ .setDescription("Mutes a member, stopping them from talking in the server")
+ .addUserOption((option) => option.setName("user").setDescription("The user to mute").setRequired(true))
.addIntegerOption((option) =>
option
.setName("days")
- .setDescription(
- "The number of days to mute the user for | Default: 0"
- )
+ .setDescription("The number of days to mute the user for | Default: 0")
.setMinValue(0)
.setMaxValue(27)
.setRequired(false)
@@ -43,9 +25,7 @@
.addIntegerOption((option) =>
option
.setName("hours")
- .setDescription(
- "The number of hours to mute the user for | Default: 0"
- )
+ .setDescription("The number of hours to mute the user for | Default: 0")
.setMinValue(0)
.setMaxValue(23)
.setRequired(false)
@@ -53,9 +33,7 @@
.addIntegerOption((option) =>
option
.setName("minutes")
- .setDescription(
- "The number of minutes to mute the user for | Default: 0"
- )
+ .setDescription("The number of minutes to mute the user for | Default: 0")
.setMinValue(0)
.setMaxValue(59)
.setRequired(false)
@@ -63,17 +41,14 @@
.addIntegerOption((option) =>
option
.setName("seconds")
- .setDescription(
- "The number of seconds to mute the user for | Default: 0"
- )
+ .setDescription("The number of seconds to mute the user for | Default: 0")
.setMinValue(0)
.setMaxValue(59)
.setRequired(false)
);
const callback = async (interaction: CommandInteraction): Promise<unknown> => {
- const { log, NucleusColors, renderUser, entry, renderDelta } =
- client.logger;
+ const { log, NucleusColors, renderUser, entry, renderDelta } = client.logger;
const user = interaction.options.getMember("user") as GuildMember;
const time = {
days: interaction.options.getInteger("days") ?? 0,
@@ -82,19 +57,12 @@
seconds: interaction.options.getInteger("seconds") ?? 0
};
const config = await client.database.guilds.read(interaction.guild.id);
- let serverSettingsDescription = config.moderation.mute.timeout
- ? "given a timeout"
- : "";
+ let serverSettingsDescription = config.moderation.mute.timeout ? "given a timeout" : "";
if (config.moderation.mute.role)
serverSettingsDescription +=
- (serverSettingsDescription ? " and " : "") +
- `given the <@&${config.moderation.mute.role}> role`;
+ (serverSettingsDescription ? " and " : "") + `given the <@&${config.moderation.mute.role}> role`;
- let muteTime =
- time.days * 24 * 60 * 60 +
- time.hours * 60 * 60 +
- time.minutes * 60 +
- time.seconds;
+ let muteTime = time.days * 24 * 60 * 60 + time.hours * 60 * 60 + time.minutes * 60 + time.seconds;
if (muteTime === 0) {
const m = (await interaction.reply({
embeds: [
@@ -106,40 +74,16 @@
],
components: [
new MessageActionRow().addComponents([
- new Discord.MessageButton()
- .setCustomId("1m")
- .setLabel("1 Minute")
- .setStyle("SECONDARY"),
- new Discord.MessageButton()
- .setCustomId("10m")
- .setLabel("10 Minutes")
- .setStyle("SECONDARY"),
- new Discord.MessageButton()
- .setCustomId("30m")
- .setLabel("30 Minutes")
- .setStyle("SECONDARY"),
- new Discord.MessageButton()
- .setCustomId("1h")
- .setLabel("1 Hour")
- .setStyle("SECONDARY")
+ new Discord.MessageButton().setCustomId("1m").setLabel("1 Minute").setStyle("SECONDARY"),
+ new Discord.MessageButton().setCustomId("10m").setLabel("10 Minutes").setStyle("SECONDARY"),
+ new Discord.MessageButton().setCustomId("30m").setLabel("30 Minutes").setStyle("SECONDARY"),
+ new Discord.MessageButton().setCustomId("1h").setLabel("1 Hour").setStyle("SECONDARY")
]),
new MessageActionRow().addComponents([
- new Discord.MessageButton()
- .setCustomId("6h")
- .setLabel("6 Hours")
- .setStyle("SECONDARY"),
- new Discord.MessageButton()
- .setCustomId("12h")
- .setLabel("12 Hours")
- .setStyle("SECONDARY"),
- new Discord.MessageButton()
- .setCustomId("1d")
- .setLabel("1 Day")
- .setStyle("SECONDARY"),
- new Discord.MessageButton()
- .setCustomId("1w")
- .setLabel("1 Week")
- .setStyle("SECONDARY")
+ new Discord.MessageButton().setCustomId("6h").setLabel("6 Hours").setStyle("SECONDARY"),
+ new Discord.MessageButton().setCustomId("12h").setLabel("12 Hours").setStyle("SECONDARY"),
+ new Discord.MessageButton().setCustomId("1d").setLabel("1 Day").setStyle("SECONDARY"),
+ new Discord.MessageButton().setCustomId("1w").setLabel("1 Week").setStyle("SECONDARY")
]),
new MessageActionRow().addComponents([
new Discord.MessageButton()
@@ -228,9 +172,7 @@
time: `${humanizeDuration(muteTime * 1000, {
round: true
})}`,
- reason: reason
- ? "\n> " + (reason ?? "").replaceAll("\n", "\n> ")
- : "*No reason provided*"
+ reason: reason ? "\n> " + (reason ?? "").replaceAll("\n", "\n> ") : "*No reason provided*"
}) +
"The user will be " +
serverSettingsDescription +
@@ -244,12 +186,7 @@
"Create appeal ticket",
!(await areTicketsEnabled(interaction.guild.id)),
async () =>
- await create(
- interaction.guild,
- interaction.options.getUser("user"),
- interaction.user,
- reason
- ),
+ await create(interaction.guild, interaction.options.getUser("user"), interaction.user, reason),
"An appeal ticket will be created when Confirm is clicked",
"CONTROL.TICKET",
createAppealTicket
@@ -291,17 +228,9 @@
? ` for:\n> ${reason}`
: ".\n\n" +
`You will be unmuted at: <t:${
- Math.round(
- new Date().getTime() / 1000
- ) + muteTime
- }:D> at <t:${
- Math.round(
- new Date().getTime() / 1000
- ) + muteTime
- }:T> (<t:${
- Math.round(
- new Date().getTime() / 1000
- ) + muteTime
+ Math.round(new Date().getTime() / 1000) + muteTime
+ }:D> at <t:${Math.round(new Date().getTime() / 1000) + muteTime}:T> (<t:${
+ Math.round(new Date().getTime() / 1000) + muteTime
}:R>)`) +
(confirmation.components.appeal.response
? `You can appeal this here: <#${confirmation.components.appeal.response}>`
@@ -331,10 +260,7 @@
let errors = 0;
try {
if (config.moderation.mute.timeout) {
- await member.timeout(
- muteTime * 1000,
- reason || "No reason provided"
- );
+ await member.timeout(muteTime * 1000, reason || "No reason provided");
if (config.moderation.mute.role !== null) {
await member.roles.add(config.moderation.mute.role);
await client.database.eventScheduler.schedule(
@@ -354,15 +280,11 @@
try {
if (config.moderation.mute.role !== null) {
await member.roles.add(config.moderation.mute.role);
- await client.database.eventScheduler.schedule(
- "unmuteRole",
- new Date().getTime() + muteTime * 1000,
- {
- guild: interaction.guild.id,
- user: user.id,
- role: config.moderation.mute.role
- }
- );
+ await client.database.eventScheduler.schedule("unmuteRole", new Date().getTime() + muteTime * 1000, {
+ guild: interaction.guild.id,
+ user: user.id,
+ role: config.moderation.mute.role
+ });
}
} catch (e) {
console.log(e);
@@ -374,9 +296,7 @@
new EmojiEmbed()
.setEmoji("PUNISH.MUTE.RED")
.setTitle("Mute")
- .setDescription(
- "Something went wrong and the user was not muted"
- )
+ .setDescription("Something went wrong and the user was not muted")
.setStatus("Danger")
],
components: []
@@ -384,13 +304,7 @@
if (dmd) await dm.delete();
return;
}
- await client.database.history.create(
- "mute",
- interaction.guild.id,
- member.user,
- interaction.user,
- reason
- );
+ await client.database.history.create("mute", interaction.guild.id, member.user, interaction.user, reason);
const failed = !dmd && notify;
await interaction.editReply({
embeds: [
@@ -424,14 +338,8 @@
new Date().getTime() + muteTime * 1000,
renderDelta(new Date().getTime() + muteTime * 1000)
),
- muted: entry(
- new Date().getTime(),
- renderDelta(new Date().getTime() - 1000)
- ),
- mutedBy: entry(
- interaction.member.user.id,
- renderUser(interaction.member.user)
- ),
+ muted: entry(new Date().getTime(), renderDelta(new Date().getTime() - 1000)),
+ mutedBy: entry(interaction.member.user.id, renderUser(interaction.member.user)),
reason: entry(reason, reason ? reason : "*No reason provided*")
},
hidden: {
@@ -457,30 +365,24 @@
const member = interaction.member as GuildMember;
const me = interaction.guild.me!;
const apply = interaction.options.getMember("user") as GuildMember;
- if (member === null || me === null || apply === null)
- throw "That member is not in the server";
+ if (member === null || me === null || apply === null) throw "That member is not in the server";
const memberPos = member.roles ? member.roles.highest.position : 0;
const mePos = me.roles ? me.roles.highest.position : 0;
const applyPos = apply.roles ? apply.roles.highest.position : 0;
// Do not allow muting the owner
- if (member.id === interaction.guild.ownerId)
- throw "You cannot mute the owner of the server";
+ if (member.id === interaction.guild.ownerId) throw "You cannot mute the owner of the server";
// Check if Nucleus can mute the member
- if (!(mePos > applyPos))
- throw "I do not have a role higher than that member";
+ if (!(mePos > applyPos)) throw "I do not have a role higher than that member";
// Check if Nucleus has permission to mute
- if (!me.permissions.has("MODERATE_MEMBERS"))
- throw "I do not have the *Moderate Members* permission";
+ if (!me.permissions.has("MODERATE_MEMBERS")) throw "I do not have the *Moderate Members* permission";
// Do not allow muting Nucleus
if (member.id === me.id) throw "I cannot mute myself";
// Allow the owner to mute anyone
if (member.id === interaction.guild.ownerId) return true;
// Check if the user has moderate_members permission
- if (!member.permissions.has("MODERATE_MEMBERS"))
- throw "You do not have the *Moderate Members* permission";
+ if (!member.permissions.has("MODERATE_MEMBERS")) throw "You do not have the *Moderate Members* permission";
// Check if the user is below on the role list
- if (!(memberPos > applyPos))
- throw "You do not have a role higher than that member";
+ if (!(memberPos > applyPos)) throw "You do not have a role higher than that member";
// Allow mute
return true;
};
diff --git a/src/commands/mod/nick.ts b/src/commands/mod/nick.ts
index c3d6b33..cba14f4 100644
--- a/src/commands/mod/nick.ts
+++ b/src/commands/mod/nick.ts
@@ -9,22 +9,12 @@
builder
.setName("nick")
.setDescription("Changes a users nickname")
- .addUserOption((option) =>
- option
- .setName("user")
- .setDescription("The user to change")
- .setRequired(true)
- )
+ .addUserOption((option) => option.setName("user").setDescription("The user to change").setRequired(true))
.addStringOption((option) =>
- option
- .setName("name")
- .setDescription("The name to set | Leave blank to clear")
- .setRequired(false)
+ option.setName("name").setDescription("The name to set | Leave blank to clear").setRequired(false)
);
-const callback = async (
- interaction: CommandInteraction
-): Promise<void | unknown> => {
+const callback = async (interaction: CommandInteraction): Promise<void | unknown> => {
const { renderUser } = client.logger;
// TODO:[Modals] Replace this with a modal
let notify = true;
@@ -37,19 +27,12 @@
keyValueList({
user: renderUser(interaction.options.getUser("user")),
"new nickname": `${
- interaction.options.getString("name")
- ? interaction.options.getString("name")
- : "*No nickname*"
+ interaction.options.getString("name") ? interaction.options.getString("name") : "*No nickname*"
}`
}) +
`The user **will${notify ? "" : " not"}** be notified\n\n` +
- `Are you sure you want to ${
- interaction.options.getString("name")
- ? "change"
- : "clear"
- } <@!${
- (interaction.options.getMember("user") as GuildMember)
- .id
+ `Are you sure you want to ${interaction.options.getString("name") ? "change" : "clear"} <@!${
+ (interaction.options.getMember("user") as GuildMember).id
}>'s nickname?`
)
.setColor("Danger")
@@ -74,23 +57,17 @@
let dm;
try {
if (notify) {
- dm = await (
- interaction.options.getMember("user") as GuildMember
- ).send({
+ dm = await (interaction.options.getMember("user") as GuildMember).send({
embeds: [
new EmojiEmbed()
.setEmoji("PUNISH.NICKNAME.RED")
.setTitle("Nickname changed")
.setDescription(
`Your nickname was ${
- interaction.options.getString("name")
- ? "changed"
- : "cleared"
+ interaction.options.getString("name") ? "changed" : "cleared"
} in ${interaction.guild.name}.` +
(interaction.options.getString("name")
- ? ` it is now: ${interaction.options.getString(
- "name"
- )}`
+ ? ` it is now: ${interaction.options.getString("name")}`
: "") +
"\n\n" +
(confirmation.components.appeal.response
@@ -119,8 +96,7 @@
before,
nickname
);
- const { log, NucleusColors, entry, renderUser, renderDelta } =
- client.logger;
+ const { log, NucleusColors, entry, renderUser, renderDelta } = client.logger;
const data = {
meta: {
type: "memberUpdate",
@@ -134,14 +110,8 @@
memberId: entry(member.id, `\`${member.id}\``),
before: entry(before, before ? before : "*None*"),
after: entry(nickname, nickname ? nickname : "*None*"),
- updated: entry(
- new Date().getTime(),
- renderDelta(new Date().getTime())
- ),
- updatedBy: entry(
- interaction.user.id,
- renderUser(interaction.user)
- )
+ updated: entry(new Date().getTime(), renderDelta(new Date().getTime())),
+ updatedBy: entry(interaction.user.id, renderUser(interaction.user))
},
hidden: {
guild: interaction.guild.id
@@ -154,9 +124,7 @@
new EmojiEmbed()
.setEmoji("PUNISH.NICKNAME.RED")
.setTitle("Nickname")
- .setDescription(
- "Something went wrong and the users nickname could not be changed."
- )
+ .setDescription("Something went wrong and the users nickname could not be changed.")
.setStatus("Danger")
],
components: []
@@ -199,30 +167,24 @@
const member = interaction.member as GuildMember;
const me = interaction.guild.me!;
const apply = interaction.options.getMember("user") as GuildMember;
- if (member === null || me === null || apply === null)
- throw "That member is not in the server";
+ if (member === null || me === null || apply === null) throw "That member is not in the server";
const memberPos = member.roles ? member.roles.highest.position : 0;
const mePos = me.roles ? me.roles.highest.position : 0;
const applyPos = apply.roles ? apply.roles.highest.position : 0;
// Do not allow any changing of the owner
- if (member.id === interaction.guild.ownerId)
- throw "You cannot change the owner's nickname";
+ if (member.id === interaction.guild.ownerId) throw "You cannot change the owner's nickname";
// Check if Nucleus can change the nickname
- if (!(mePos > applyPos))
- throw "I do not have a role higher than that member";
+ if (!(mePos > applyPos)) throw "I do not have a role higher than that member";
// Check if Nucleus has permission to change the nickname
- if (!me.permissions.has("MANAGE_NICKNAMES"))
- throw "I do not have the *Manage Nicknames* permission";
+ if (!me.permissions.has("MANAGE_NICKNAMES")) throw "I do not have the *Manage Nicknames* permission";
// Allow the owner to change anyone's nickname
if (member.id === interaction.guild.ownerId) return true;
// Check if the user has manage_nicknames permission
- if (!member.permissions.has("MANAGE_NICKNAMES"))
- throw "You do not have the *Manage Nicknames* permission";
+ if (!member.permissions.has("MANAGE_NICKNAMES")) throw "You do not have the *Manage Nicknames* permission";
// Allow changing your own nickname
if (member === apply) return true;
// Check if the user is below on the role list
- if (!(memberPos > applyPos))
- throw "You do not have a role higher than that member";
+ if (!(memberPos > applyPos)) throw "You do not have a role higher than that member";
// Allow change
return true;
};
diff --git a/src/commands/mod/purge.ts b/src/commands/mod/purge.ts
index b78c423..63a919c 100644
--- a/src/commands/mod/purge.ts
+++ b/src/commands/mod/purge.ts
@@ -1,9 +1,4 @@
-import Discord, {
- CommandInteraction,
- GuildChannel,
- GuildMember,
- TextChannel
-} from "discord.js";
+import Discord, { CommandInteraction, GuildChannel, GuildMember, TextChannel } from "discord.js";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import confirmationMessage from "../../utils/confirmationMessage.js";
import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
@@ -24,31 +19,19 @@
.setMaxValue(100)
)
.addUserOption((option) =>
- option
- .setName("user")
- .setDescription("The user to purge messages from")
- .setRequired(false)
+ option.setName("user").setDescription("The user to purge messages from").setRequired(false)
)
.addStringOption((option) =>
- option
- .setName("reason")
- .setDescription("The reason for the purge")
- .setRequired(false)
+ option.setName("reason").setDescription("The reason for the purge").setRequired(false)
);
-const callback = async (
- interaction: CommandInteraction
-): Promise<void | unknown> => {
+const callback = async (interaction: CommandInteraction): Promise<void | unknown> => {
const user = (interaction.options.getMember("user") as GuildMember) ?? null;
const channel = interaction.channel as GuildChannel;
if (
- ![
- "GUILD_TEXT",
- "GUILD_NEWS",
- "GUILD_NEWS_THREAD",
- "GUILD_PUBLIC_THREAD",
- "GUILD_PRIVATE_THREAD"
- ].includes(channel.type.toString())
+ !["GUILD_TEXT", "GUILD_NEWS", "GUILD_NEWS_THREAD", "GUILD_PUBLIC_THREAD", "GUILD_PRIVATE_THREAD"].includes(
+ channel.type.toString()
+ )
) {
return await interaction.reply({
embeds: [
@@ -90,32 +73,14 @@
],
components: [
new Discord.MessageActionRow().addComponents([
- new Discord.MessageButton()
- .setCustomId("1")
- .setLabel("1")
- .setStyle("SECONDARY"),
- new Discord.MessageButton()
- .setCustomId("3")
- .setLabel("3")
- .setStyle("SECONDARY"),
- new Discord.MessageButton()
- .setCustomId("5")
- .setLabel("5")
- .setStyle("SECONDARY")
+ new Discord.MessageButton().setCustomId("1").setLabel("1").setStyle("SECONDARY"),
+ new Discord.MessageButton().setCustomId("3").setLabel("3").setStyle("SECONDARY"),
+ new Discord.MessageButton().setCustomId("5").setLabel("5").setStyle("SECONDARY")
]),
new Discord.MessageActionRow().addComponents([
- new Discord.MessageButton()
- .setCustomId("10")
- .setLabel("10")
- .setStyle("SECONDARY"),
- new Discord.MessageButton()
- .setCustomId("25")
- .setLabel("25")
- .setStyle("SECONDARY"),
- new Discord.MessageButton()
- .setCustomId("50")
- .setLabel("50")
- .setStyle("SECONDARY")
+ new Discord.MessageButton().setCustomId("10").setLabel("10").setStyle("SECONDARY"),
+ new Discord.MessageButton().setCustomId("25").setLabel("25").setStyle("SECONDARY"),
+ new Discord.MessageButton().setCustomId("50").setLabel("50").setStyle("SECONDARY")
]),
new Discord.MessageActionRow().addComponents([
new Discord.MessageButton()
@@ -144,17 +109,12 @@
break;
}
let messages;
- await (interaction.channel as TextChannel).messages
- .fetch({ limit: amount })
- .then(async (ms) => {
- if (user) {
- ms = ms.filter((m) => m.author.id === user.id);
- }
- messages = await (channel as TextChannel).bulkDelete(
- ms,
- true
- );
- });
+ await (interaction.channel as TextChannel).messages.fetch({ limit: amount }).then(async (ms) => {
+ if (user) {
+ ms = ms.filter((m) => m.author.id === user.id);
+ }
+ messages = await (channel as TextChannel).bulkDelete(ms, true);
+ });
if (messages) {
deleted = deleted.concat(messages.map((m) => m));
}
@@ -181,8 +141,7 @@
deleted.length
);
}
- const { log, NucleusColors, entry, renderUser, renderChannel } =
- client.logger;
+ const { log, NucleusColors, entry, renderUser, renderChannel } = client.logger;
const data = {
meta: {
type: "channelPurge",
@@ -193,18 +152,9 @@
timestamp: new Date().getTime()
},
list: {
- memberId: entry(
- interaction.user.id,
- `\`${interaction.user.id}\``
- ),
- purgedBy: entry(
- interaction.user.id,
- renderUser(interaction.user)
- ),
- channel: entry(
- interaction.channel.id,
- renderChannel(interaction.channel)
- ),
+ memberId: entry(interaction.user.id, `\`${interaction.user.id}\``),
+ purgedBy: entry(interaction.user.id, renderUser(interaction.user)),
+ channel: entry(interaction.channel.id, renderChannel(interaction.channel)),
messagesCleared: entry(deleted.length, deleted.length)
},
hidden: {
@@ -214,9 +164,7 @@
log(data);
let out = "";
deleted.reverse().forEach((message) => {
- out += `${message.author.username}#${
- message.author.discriminator
- } (${message.author.id}) [${new Date(
+ out += `${message.author.username}#${message.author.discriminator} (${message.author.id}) [${new Date(
message.createdTimestamp
).toISOString()}]\n`;
const lines = message.content.split("\n");
@@ -304,29 +252,19 @@
let messages;
try {
if (!user) {
- const toDelete = await (
- interaction.channel as TextChannel
- ).messages.fetch({
+ const toDelete = await (interaction.channel as TextChannel).messages.fetch({
limit: interaction.options.getInteger("amount")
});
- messages = await (channel as TextChannel).bulkDelete(
- toDelete,
- true
- );
+ messages = await (channel as TextChannel).bulkDelete(toDelete, true);
} else {
const toDelete = (
await (
- await (
- interaction.channel as TextChannel
- ).messages.fetch({
+ await (interaction.channel as TextChannel).messages.fetch({
limit: 100
})
).filter((m) => m.author.id === user.id)
).first(interaction.options.getInteger("amount"));
- messages = await (channel as TextChannel).bulkDelete(
- toDelete,
- true
- );
+ messages = await (channel as TextChannel).bulkDelete(toDelete, true);
}
} catch (e) {
await interaction.editReply({
@@ -334,9 +272,7 @@
new EmojiEmbed()
.setEmoji("CHANNEL.PURGE.RED")
.setTitle("Purge")
- .setDescription(
- "Something went wrong and no messages were deleted"
- )
+ .setDescription("Something went wrong and no messages were deleted")
.setStatus("Danger")
],
components: []
@@ -353,8 +289,7 @@
messages.size
);
}
- const { log, NucleusColors, entry, renderUser, renderChannel } =
- client.logger;
+ const { log, NucleusColors, entry, renderUser, renderChannel } = client.logger;
const data = {
meta: {
type: "channelPurge",
@@ -365,18 +300,9 @@
timestamp: new Date().getTime()
},
list: {
- memberId: entry(
- interaction.user.id,
- `\`${interaction.user.id}\``
- ),
- purgedBy: entry(
- interaction.user.id,
- renderUser(interaction.user)
- ),
- channel: entry(
- interaction.channel.id,
- renderChannel(interaction.channel)
- ),
+ memberId: entry(interaction.user.id, `\`${interaction.user.id}\``),
+ purgedBy: entry(interaction.user.id, renderUser(interaction.user)),
+ channel: entry(interaction.channel.id, renderChannel(interaction.channel)),
messagesCleared: entry(messages.size, messages.size)
},
hidden: {
@@ -386,9 +312,7 @@
log(data);
let out = "";
messages.reverse().forEach((message) => {
- out += `${message.author.username}#${
- message.author.discriminator
- } (${message.author.id}) [${new Date(
+ out += `${message.author.username}#${message.author.discriminator} (${message.author.id}) [${new Date(
message.createdTimestamp
).toISOString()}]\n`;
const lines = message.content.split("\n");
@@ -472,13 +396,11 @@
const member = interaction.member as GuildMember;
const me = interaction.guild.me!;
// Check if nucleus has the manage_messages permission
- if (!me.permissions.has("MANAGE_MESSAGES"))
- throw "I do not have the *Manage Messages* permission";
+ if (!me.permissions.has("MANAGE_MESSAGES")) throw "I do not have the *Manage Messages* permission";
// Allow the owner to purge
if (member.id === interaction.guild.ownerId) return true;
// Check if the user has manage_messages permission
- if (!member.permissions.has("MANAGE_MESSAGES"))
- throw "You do not have the *Manage Messages* permission";
+ if (!member.permissions.has("MANAGE_MESSAGES")) throw "You do not have the *Manage Messages* permission";
// Allow purge
return true;
};
diff --git a/src/commands/mod/slowmode.ts b/src/commands/mod/slowmode.ts
index 1a06db1..5565534 100644
--- a/src/commands/mod/slowmode.ts
+++ b/src/commands/mod/slowmode.ts
@@ -34,10 +34,7 @@
const callback = async (interaction: CommandInteraction): Promise<void> => {
let time = parseInt(interaction.options.getString("time") ?? "0");
- if (
- time === 0 &&
- (interaction.channel as TextChannel).rateLimitPerUser === 0
- ) {
+ if (time === 0 && (interaction.channel as TextChannel).rateLimitPerUser === 0) {
time = 10;
}
const confirmation = await new confirmationMessage(interaction)
@@ -45,9 +42,7 @@
.setTitle("Slowmode")
.setDescription(
keyValueList({
- time: time
- ? humanizeDuration(time * 1000, { round: true })
- : "No delay"
+ time: time ? humanizeDuration(time * 1000, { round: true }) : "No delay"
}) + "Are you sure you want to set the slowmode in this channel?"
)
.setColor("Danger")
@@ -62,9 +57,7 @@
new EmojiEmbed()
.setEmoji("CHANNEL.SLOWMODE.OFF")
.setTitle("Slowmode")
- .setDescription(
- "Something went wrong while setting the slowmode"
- )
+ .setDescription("Something went wrong while setting the slowmode")
.setStatus("Danger")
],
components: []
@@ -100,8 +93,7 @@
if (!interaction.guild.me.permissions.has("MANAGE_CHANNELS"))
throw "I do not have the *Manage Channels* permission";
// Check if the user has manage_channel permission
- if (!member.permissions.has("MANAGE_CHANNELS"))
- throw "You do not have the *Manage Channels* permission";
+ if (!member.permissions.has("MANAGE_CHANNELS")) throw "You do not have the *Manage Channels* permission";
// Allow slowmode
return true;
};
diff --git a/src/commands/mod/softban.ts b/src/commands/mod/softban.ts
index f3c475e..57a70dc 100644
--- a/src/commands/mod/softban.ts
+++ b/src/commands/mod/softban.ts
@@ -1,9 +1,4 @@
-import {
- CommandInteraction,
- GuildMember,
- MessageActionRow,
- MessageButton
-} from "discord.js";
+import { CommandInteraction, GuildMember, MessageActionRow, MessageButton } from "discord.js";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import confirmationMessage from "../../utils/confirmationMessage.js";
import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
@@ -15,12 +10,7 @@
builder
.setName("softban")
.setDescription("Kicks a user and deletes their messages")
- .addUserOption((option) =>
- option
- .setName("user")
- .setDescription("The user to softban")
- .setRequired(true)
- )
+ .addUserOption((option) => option.setName("user").setDescription("The user to softban").setRequired(true))
.addIntegerOption((option) =>
option
.setName("delete")
@@ -30,9 +20,7 @@
.setRequired(false)
);
-const callback = async (
- interaction: CommandInteraction
-): Promise<void | unknown> => {
+const callback = async (interaction: CommandInteraction): Promise<void | unknown> => {
const { renderUser } = client.logger;
// TODO:[Modals] Replace this with a modal
let reason = null;
@@ -45,21 +33,14 @@
.setDescription(
keyValueList({
user: renderUser(interaction.options.getUser("user")),
- reason: reason
- ? "\n> " + (reason ?? "").replaceAll("\n", "\n> ")
- : "*No reason provided*"
+ reason: reason ? "\n> " + (reason ?? "").replaceAll("\n", "\n> ") : "*No reason provided*"
}) +
`The user **will${notify ? "" : " not"}** be notified\n` +
`${addPlural(
- interaction.options.getInteger("delete")
- ? interaction.options.getInteger("delete")
- : 0,
+ interaction.options.getInteger("delete") ? interaction.options.getInteger("delete") : 0,
"day"
)} of messages will be deleted\n\n` +
- `Are you sure you want to softban <@!${
- (interaction.options.getMember("user") as GuildMember)
- .id
- }>?`
+ `Are you sure you want to softban <@!${(interaction.options.getMember("user") as GuildMember).id}>?`
)
.setColor("Danger")
.addCustomBoolean(
@@ -86,9 +67,7 @@
const config = await client.database.guilds.read(interaction.guild.id);
try {
if (notify) {
- await (
- interaction.options.getMember("user") as GuildMember
- ).send({
+ await (interaction.options.getMember("user") as GuildMember).send({
embeds: [
new EmojiEmbed()
.setEmoji("PUNISH.BAN.RED")
@@ -130,30 +109,20 @@
new EmojiEmbed()
.setEmoji("PUNISH.BAN.RED")
.setTitle("Softban")
- .setDescription(
- "Something went wrong and the user was not softbanned"
- )
+ .setDescription("Something went wrong and the user was not softbanned")
.setStatus("Danger")
],
components: []
});
}
- await client.database.history.create(
- "softban",
- interaction.guild.id,
- member.user,
- reason
- );
+ await client.database.history.create("softban", interaction.guild.id, member.user, reason);
const failed = !dmd && notify;
await interaction.editReply({
embeds: [
new EmojiEmbed()
.setEmoji(`PUNISH.BAN.${failed ? "YELLOW" : "GREEN"}`)
.setTitle("Softban")
- .setDescription(
- "The member was softbanned" +
- (failed ? ", but could not be notified" : "")
- )
+ .setDescription("The member was softbanned" + (failed ? ", but could not be notified" : ""))
.setStatus(failed ? "Warning" : "Success")
],
components: []
@@ -176,30 +145,24 @@
const member = interaction.member as GuildMember;
const me = interaction.guild.me!;
const apply = interaction.options.getMember("user") as GuildMember;
- if (member === null || me === null || apply === null)
- throw "That member is not in the server";
+ if (member === null || me === null || apply === null) throw "That member is not in the server";
const memberPos = member.roles ? member.roles.highest.position : 0;
const mePos = me.roles ? me.roles.highest.position : 0;
const applyPos = apply.roles ? apply.roles.highest.position : 0;
// Do not allow softbanning the owner
- if (member.id === interaction.guild.ownerId)
- throw "You cannot softban the owner of the server";
+ if (member.id === interaction.guild.ownerId) throw "You cannot softban the owner of the server";
// Check if Nucleus can ban the member
- if (!(mePos > applyPos))
- throw "I do not have a role higher than that member";
+ if (!(mePos > applyPos)) throw "I do not have a role higher than that member";
// Check if Nucleus has permission to ban
- if (!me.permissions.has("BAN_MEMBERS"))
- throw "I do not have the *Ban Members* permission";
+ if (!me.permissions.has("BAN_MEMBERS")) throw "I do not have the *Ban Members* permission";
// Do not allow softbanning Nucleus
if (member.id === me.id) throw "I cannot softban myself";
// Allow the owner to softban anyone
if (member.id === interaction.guild.ownerId) return true;
// Check if the user has ban_members permission
- if (!member.permissions.has("BAN_MEMBERS"))
- throw "You do not have the *Ban Members* permission";
+ if (!member.permissions.has("BAN_MEMBERS")) throw "You do not have the *Ban Members* permission";
// Check if the user is below on the role list
- if (!(memberPos > applyPos))
- throw "You do not have a role higher than that member";
+ if (!(memberPos > applyPos)) throw "You do not have a role higher than that member";
// Allow softban
return true;
};
diff --git a/src/commands/mod/unban.ts b/src/commands/mod/unban.ts
index 06fe647..9ba10e1 100644
--- a/src/commands/mod/unban.ts
+++ b/src/commands/mod/unban.ts
@@ -10,34 +10,21 @@
.setName("unban")
.setDescription("Unbans a user")
.addStringOption((option) =>
- option
- .setName("user")
- .setDescription("The user to unban (Username or ID)")
- .setRequired(true)
+ option.setName("user").setDescription("The user to unban (Username or ID)").setRequired(true)
);
-const callback = async (
- interaction: CommandInteraction
-): Promise<void | unknown> => {
+const callback = async (interaction: CommandInteraction): Promise<void | unknown> => {
const bans = await interaction.guild.bans.fetch();
const user = interaction.options.getString("user");
let resolved = bans.find((ban) => ban.user.id === user);
- if (!resolved)
- resolved = bans.find(
- (ban) => ban.user.username.toLowerCase() === user.toLowerCase()
- );
- if (!resolved)
- resolved = bans.find(
- (ban) => ban.user.tag.toLowerCase() === user.toLowerCase()
- );
+ if (!resolved) resolved = bans.find((ban) => ban.user.username.toLowerCase() === user.toLowerCase());
+ if (!resolved) resolved = bans.find((ban) => ban.user.tag.toLowerCase() === user.toLowerCase());
if (!resolved) {
return interaction.reply({
embeds: [
new EmojiEmbed()
.setTitle("Unban")
- .setDescription(
- `Could not find any user called \`${user}\``
- )
+ .setDescription(`Could not find any user called \`${user}\``)
.setEmoji("PUNISH.UNBAN.RED")
.setStatus("Danger")
],
@@ -58,19 +45,10 @@
if (confirmation.cancelled) return;
if (confirmation.success) {
try {
- await interaction.guild.members.unban(
- resolved.user as User,
- "Unban"
- );
+ await interaction.guild.members.unban(resolved.user as User, "Unban");
const member = resolved.user as User;
- await client.database.history.create(
- "unban",
- interaction.guild.id,
- member,
- interaction.user
- );
- const { log, NucleusColors, entry, renderUser, renderDelta } =
- client.logger;
+ await client.database.history.create("unban", interaction.guild.id, member, interaction.user);
+ const { log, NucleusColors, entry, renderUser, renderDelta } = client.logger;
const data = {
meta: {
type: "memberUnban",
@@ -83,18 +61,9 @@
list: {
memberId: entry(member.id, `\`${member.id}\``),
name: entry(member.id, renderUser(member)),
- unbanned: entry(
- new Date().getTime(),
- renderDelta(new Date().getTime())
- ),
- unbannedBy: entry(
- interaction.user.id,
- renderUser(interaction.user)
- ),
- accountCreated: entry(
- member.createdAt,
- renderDelta(member.createdAt)
- )
+ unbanned: entry(new Date().getTime(), renderDelta(new Date().getTime())),
+ unbannedBy: entry(interaction.user.id, renderUser(interaction.user)),
+ accountCreated: entry(member.createdAt, renderDelta(member.createdAt))
},
hidden: {
guild: interaction.guild.id
@@ -107,9 +76,7 @@
new EmojiEmbed()
.setEmoji("PUNISH.UNBAN.RED")
.setTitle("Unban")
- .setDescription(
- "Something went wrong and the user was not unbanned"
- )
+ .setDescription("Something went wrong and the user was not unbanned")
.setStatus("Danger")
],
components: []
@@ -143,13 +110,11 @@
const member = interaction.member as GuildMember;
const me = interaction.guild.me!;
// Check if Nucleus can unban members
- if (!me.permissions.has("BAN_MEMBERS"))
- throw "I do not have the *Ban Members* permission";
+ if (!me.permissions.has("BAN_MEMBERS")) throw "I do not have the *Ban Members* permission";
// Allow the owner to unban anyone
if (member.id === interaction.guild.ownerId) return true;
// Check if the user has ban_members permission
- if (!member.permissions.has("BAN_MEMBERS"))
- throw "You do not have the *Ban Members* permission";
+ if (!member.permissions.has("BAN_MEMBERS")) throw "You do not have the *Ban Members* permission";
// Allow unban
return true;
};
diff --git a/src/commands/mod/unmute.ts b/src/commands/mod/unmute.ts
index f625461..40a2093 100644
--- a/src/commands/mod/unmute.ts
+++ b/src/commands/mod/unmute.ts
@@ -9,18 +9,10 @@
builder
.setName("unmute")
.setDescription("Unmutes a user")
- .addUserOption((option) =>
- option
- .setName("user")
- .setDescription("The user to unmute")
- .setRequired(true)
- );
+ .addUserOption((option) => option.setName("user").setDescription("The user to unmute").setRequired(true));
-const callback = async (
- interaction: CommandInteraction
-): Promise<void | unknown> => {
- const { log, NucleusColors, renderUser, entry, renderDelta } =
- client.logger;
+const callback = async (interaction: CommandInteraction): Promise<void | unknown> => {
+ const { log, NucleusColors, renderUser, entry, renderDelta } = client.logger;
// TODO:[Modals] Replace this with a modal
let reason = null;
let notify = false;
@@ -35,10 +27,7 @@
reason: `\n> ${reason ? reason : "*No reason provided*"}`
}) +
`The user **will${notify ? "" : " not"}** be notified\n\n` +
- `Are you sure you want to unmute <@!${
- (interaction.options.getMember("user") as GuildMember)
- .id
- }>?`
+ `Are you sure you want to unmute <@!${(interaction.options.getMember("user") as GuildMember).id}>?`
)
.setColor("Danger")
.addReasonButton(reason ?? "")
@@ -55,18 +44,14 @@
let dm;
try {
if (notify) {
- dm = await (
- interaction.options.getMember("user") as GuildMember
- ).send({
+ dm = await (interaction.options.getMember("user") as GuildMember).send({
embeds: [
new EmojiEmbed()
.setEmoji("PUNISH.MUTE.GREEN")
.setTitle("Unmuted")
.setDescription(
`You have been unmuted in ${interaction.guild.name}` +
- (reason
- ? ` for:\n> ${reason}`
- : " with no reason provided.")
+ (reason ? ` for:\n> ${reason}` : " with no reason provided.")
)
.setStatus("Success")
]
@@ -85,9 +70,7 @@
new EmojiEmbed()
.setEmoji("PUNISH.MUTE.RED")
.setTitle("Unmute")
- .setDescription(
- "Something went wrong and the user was not unmuted"
- )
+ .setDescription("Something went wrong and the user was not unmuted")
.setStatus("Danger")
],
components: []
@@ -114,14 +97,8 @@
list: {
memberId: entry(member.user.id, `\`${member.user.id}\``),
name: entry(member.user.id, renderUser(member.user)),
- unmuted: entry(
- new Date().getTime(),
- renderDelta(new Date().getTime())
- ),
- unmutedBy: entry(
- interaction.user.id,
- renderUser(interaction.user)
- )
+ unmuted: entry(new Date().getTime(), renderDelta(new Date().getTime())),
+ unmutedBy: entry(interaction.user.id, renderUser(interaction.user))
},
hidden: {
guild: interaction.guild.id
@@ -134,10 +111,7 @@
new EmojiEmbed()
.setEmoji(`PUNISH.MUTE.${failed ? "YELLOW" : "GREEN"}`)
.setTitle("Unmute")
- .setDescription(
- "The member was unmuted" +
- (failed ? ", but could not be notified" : "")
- )
+ .setDescription("The member was unmuted" + (failed ? ", but could not be notified" : ""))
.setStatus(failed ? "Warning" : "Success")
],
components: []
@@ -160,28 +134,22 @@
const member = interaction.member as GuildMember;
const me = interaction.guild.me!;
const apply = interaction.options.getMember("user") as GuildMember;
- if (member === null || me === null || apply === null)
- throw "That member is not in the server";
+ if (member === null || me === null || apply === null) throw "That member is not in the server";
const memberPos = member.roles ? member.roles.highest.position : 0;
const mePos = me.roles ? me.roles.highest.position : 0;
const applyPos = apply.roles ? apply.roles.highest.position : 0;
// Do not allow unmuting the owner
- if (member.id === interaction.guild.ownerId)
- throw "You cannot unmute the owner of the server";
+ if (member.id === interaction.guild.ownerId) throw "You cannot unmute the owner of the server";
// Check if Nucleus can unmute the member
- if (!(mePos > applyPos))
- throw "I do not have a role higher than that member";
+ if (!(mePos > applyPos)) throw "I do not have a role higher than that member";
// Check if Nucleus has permission to unmute
- if (!me.permissions.has("MODERATE_MEMBERS"))
- throw "I do not have the *Moderate Members* permission";
+ if (!me.permissions.has("MODERATE_MEMBERS")) throw "I do not have the *Moderate Members* permission";
// Allow the owner to unmute anyone
if (member.id === interaction.guild.ownerId) return true;
// Check if the user has moderate_members permission
- if (!member.permissions.has("MODERATE_MEMBERS"))
- throw "You do not have the *Moderate Members* permission";
+ if (!member.permissions.has("MODERATE_MEMBERS")) throw "You do not have the *Moderate Members* permission";
// Check if the user is below on the role list
- if (!(memberPos > applyPos))
- throw "You do not have a role higher than that member";
+ if (!(memberPos > applyPos)) throw "You do not have a role higher than that member";
// Allow unmute
return true;
};
diff --git a/src/commands/mod/viewas.ts b/src/commands/mod/viewas.ts
index f0b2047..577192f 100644
--- a/src/commands/mod/viewas.ts
+++ b/src/commands/mod/viewas.ts
@@ -15,19 +15,13 @@
builder
.setName("viewas")
.setDescription("View the server as a specific member")
- .addUserOption((option) =>
- option
- .setName("member")
- .setDescription("The member to view as")
- .setRequired(true)
- );
+ .addUserOption((option) => option.setName("member").setDescription("The member to view as").setRequired(true));
const callback = async (interaction: CommandInteraction): Promise<void> => {
let channels = [];
let m;
interaction.guild.channels.cache.forEach((channel) => {
- if (!channel.parent && channel.type !== "GUILD_CATEGORY")
- channels.push(channel);
+ if (!channel.parent && channel.type !== "GUILD_CATEGORY") channels.push(channel);
});
channels = [channels];
channels = channels.concat(
@@ -38,11 +32,7 @@
const autoSortBelow = ["GUILD_VOICE", "GUILD_STAGE_VOICE"];
channels = channels.map((c) =>
c.sort((a, b) => {
- if (
- autoSortBelow.includes(a.type) &&
- autoSortBelow.includes(b.type)
- )
- return a.position - b.position;
+ if (autoSortBelow.includes(a.type) && autoSortBelow.includes(b.type)) return a.position - b.position;
if (autoSortBelow.includes(a.type)) return 1;
if (autoSortBelow.includes(b.type)) return -1;
return a.position - b.position;
@@ -54,9 +44,7 @@
if (!b[0].parent) return 1;
return a[0].parent.position - b[0].parent.position;
});
- const member = interaction.options.getMember(
- "member"
- ) as Discord.GuildMember;
+ const member = interaction.options.getMember("member") as Discord.GuildMember;
m = await interaction.reply({
embeds: [
new EmojiEmbed()
@@ -76,48 +64,26 @@
.setTitle("Viewing as " + member.displayName)
.setStatus("Success")
.setDescription(
- `**${
- channels[page][0].parent
- ? channels[page][0].parent.name
- : "Uncategorised"
- }**` +
+ `**${channels[page][0].parent ? channels[page][0].parent.name : "Uncategorised"}**` +
"\n" +
channels[page]
.map((c) => {
let channelType = c.type;
- if (
- interaction.guild.rulesChannelId ===
- c.id
- )
- channelType = "RULES";
- else if ("nsfw" in c && c.nsfw)
- channelType += "_NSFW";
- return c
- .permissionsFor(member)
- .has("VIEW_CHANNEL")
- ? `${getEmojiByName(
- "ICONS.CHANNEL." + channelType
- )} ${c.name}\n` +
+ if (interaction.guild.rulesChannelId === c.id) channelType = "RULES";
+ else if ("nsfw" in c && c.nsfw) channelType += "_NSFW";
+ return c.permissionsFor(member).has("VIEW_CHANNEL")
+ ? `${getEmojiByName("ICONS.CHANNEL." + channelType)} ${c.name}\n` +
(() => {
- if (
- "threads" in c &&
- c.threads.cache.size > 0
- ) {
+ if ("threads" in c && c.threads.cache.size > 0) {
return (
c.threads.cache
.map(
(t) =>
` ${
- getEmojiByName(
- "ICONS.CHANNEL.THREAD_PIPE"
- ) +
+ getEmojiByName("ICONS.CHANNEL.THREAD_PIPE") +
" " +
- getEmojiByName(
- "ICONS.CHANNEL.THREAD_CHANNEL"
- )
- } ${
- t.name
- }`
+ getEmojiByName("ICONS.CHANNEL.THREAD_CHANNEL")
+ } ${t.name}`
)
.join("\n") + "\n"
);
@@ -136,9 +102,7 @@
new MessageSelectMenu()
.setOptions(
channels.map((c, index) => ({
- label: c[0].parent
- ? c[0].parent.name
- : "Uncategorised",
+ label: c[0].parent ? c[0].parent.name : "Uncategorised",
value: index.toString(),
default: page === index
}))
@@ -195,8 +159,7 @@
const check = (interaction: CommandInteraction) => {
const member = interaction.member as GuildMember;
- if (!member.permissions.has("MANAGE_ROLES"))
- throw "You do not have the *Manage Roles* permission";
+ if (!member.permissions.has("MANAGE_ROLES")) throw "You do not have the *Manage Roles* permission";
return true;
};
diff --git a/src/commands/mod/warn.ts b/src/commands/mod/warn.ts
index 91c876e..5e321d0 100644
--- a/src/commands/mod/warn.ts
+++ b/src/commands/mod/warn.ts
@@ -1,33 +1,18 @@
-import Discord, {
- CommandInteraction,
- GuildMember,
- MessageActionRow,
- MessageButton
-} from "discord.js";
+import Discord, { CommandInteraction, GuildMember, MessageActionRow, MessageButton } from "discord.js";
import { SlashCommandSubcommandBuilder } from "@discordjs/builders";
import confirmationMessage from "../../utils/confirmationMessage.js";
import EmojiEmbed from "../../utils/generateEmojiEmbed.js";
import keyValueList from "../../utils/generateKeyValueList.js";
-import {
- create,
- areTicketsEnabled
-} from "../../actions/createModActionTicket.js";
+import { create, areTicketsEnabled } from "../../actions/createModActionTicket.js";
import client from "../../utils/client.js";
const command = (builder: SlashCommandSubcommandBuilder) =>
builder
.setName("warn")
.setDescription("Warns a user")
- .addUserOption((option) =>
- option
- .setName("user")
- .setDescription("The user to warn")
- .setRequired(true)
- );
+ .addUserOption((option) => option.setName("user").setDescription("The user to warn").setRequired(true));
-const callback = async (
- interaction: CommandInteraction
-): Promise<void | unknown> => {
+const callback = async (interaction: CommandInteraction): Promise<void | unknown> => {
const { log, NucleusColors, renderUser, entry } = client.logger;
// TODO:[Modals] Replace this with a modal
let reason = null;
@@ -41,15 +26,10 @@
.setDescription(
keyValueList({
user: renderUser(interaction.options.getUser("user")),
- reason: reason
- ? "\n> " + (reason ?? "").replaceAll("\n", "\n> ")
- : "*No reason provided*"
+ reason: reason ? "\n> " + (reason ?? "").replaceAll("\n", "\n> ") : "*No reason provided*"
}) +
`The user **will${notify ? "" : " not"}** be notified\n\n` +
- `Are you sure you want to warn <@!${
- (interaction.options.getMember("user") as GuildMember)
- .id
- }>?`
+ `Are you sure you want to warn <@!${(interaction.options.getMember("user") as GuildMember).id}>?`
)
.setColor("Danger")
.addCustomBoolean(
@@ -57,12 +37,7 @@
"Create appeal ticket",
!(await areTicketsEnabled(interaction.guild.id)),
async () =>
- await create(
- interaction.guild,
- interaction.options.getUser("user"),
- interaction.user,
- reason
- ),
+ await create(interaction.guild, interaction.options.getUser("user"), interaction.user, reason),
"An appeal ticket will be created when Confirm is clicked",
"CONTROL.TICKET",
createAppealTicket
@@ -91,12 +66,8 @@
let dmd = false;
try {
if (notify) {
- const config = await client.database.guilds.read(
- interaction.guild.id
- );
- await (
- interaction.options.getMember("user") as GuildMember
- ).send({
+ const config = await client.database.guilds.read(interaction.guild.id);
+ await (interaction.options.getMember("user") as GuildMember).send({
embeds: [
new EmojiEmbed()
.setEmoji("PUNISH.WARN.RED")
@@ -145,17 +116,10 @@
},
list: {
user: entry(
- (interaction.options.getMember("user") as GuildMember).user
- .id,
- renderUser(
- (interaction.options.getMember("user") as GuildMember)
- .user
- )
+ (interaction.options.getMember("user") as GuildMember).user.id,
+ renderUser((interaction.options.getMember("user") as GuildMember).user)
),
- warnedBy: entry(
- interaction.member.user.id,
- renderUser(interaction.member.user)
- ),
+ warnedBy: entry(interaction.member.user.id, renderUser(interaction.member.user)),
reason: reason ? `\n> ${reason}` : "No reason provided"
},
hidden: {
@@ -188,9 +152,7 @@
components: []
});
} else {
- const canSeeChannel = (
- interaction.options.getMember("user") as GuildMember
- )
+ const canSeeChannel = (interaction.options.getMember("user") as GuildMember)
.permissionsIn(interaction.channel as Discord.TextChannel)
.has("VIEW_CHANNEL");
const m = (await interaction.editReply({
@@ -198,17 +160,12 @@
new EmojiEmbed()
.setEmoji("PUNISH.WARN.RED")
.setTitle("Warn")
- .setDescription(
- "The user's DMs are not open\n\nWhat would you like to do?"
- )
+ .setDescription("The user's DMs are not open\n\nWhat would you like to do?")
.setStatus("Danger")
],
components: [
new MessageActionRow().addComponents([
- new Discord.MessageButton()
- .setCustomId("log")
- .setLabel("Ignore and log")
- .setStyle("SECONDARY"),
+ new Discord.MessageButton().setCustomId("log").setLabel("Ignore and log").setStyle("SECONDARY"),
new Discord.MessageButton()
.setCustomId("here")
.setLabel("Warn here")
@@ -245,24 +202,12 @@
new EmojiEmbed()
.setEmoji("PUNISH.WARN.RED")
.setTitle("Warn")
- .setDescription(
- "You have been warned" +
- (reason ? ` for:\n> ${reason}` : ".")
- )
+ .setDescription("You have been warned" + (reason ? ` for:\n> ${reason}` : "."))
.setStatus("Danger")
],
- content: `<@!${
- (interaction.options.getMember("user") as GuildMember)
- .id
- }>`,
+ content: `<@!${(interaction.options.getMember("user") as GuildMember).id}>`,
allowedMentions: {
- users: [
- (
- interaction.options.getMember(
- "user"
- ) as GuildMember
- ).id
- ]
+ users: [(interaction.options.getMember("user") as GuildMember).id]
}
});
return await interaction.editReply({
@@ -316,9 +261,7 @@
new EmojiEmbed()
.setEmoji("PUNISH.WARN.GREEN")
.setTitle("Warn")
- .setDescription(
- `A ticket was created in <#${ticketChannel}>`
- )
+ .setDescription(`A ticket was created in <#${ticketChannel}>`)
.setStatus("Success")
],
components: []
@@ -343,8 +286,7 @@
const member = interaction.member as GuildMember;
const me = interaction.guild.me!;
const apply = interaction.options.getMember("user") as GuildMember;
- if (member === null || me === null || apply === null)
- throw "That member is not in the server";
+ if (member === null || me === null || apply === null) throw "That member is not in the server";
const memberPos = member.roles ? member.roles.highest.position : 0;
const applyPos = apply.roles ? apply.roles.highest.position : 0;
// Do not allow warning bots
@@ -352,11 +294,9 @@
// Allow the owner to warn anyone
if (member.id === interaction.guild.ownerId) return true;
// Check if the user has moderate_members permission
- if (!member.permissions.has("MODERATE_MEMBERS"))
- throw "You do not have the *Moderate Members* permission";
+ if (!member.permissions.has("MODERATE_MEMBERS")) throw "You do not have the *Moderate Members* permission";
// Check if the user is below on the role list
- if (!(memberPos > applyPos))
- throw "You do not have a role higher than that member";
+ if (!(memberPos > applyPos)) throw "You do not have a role higher than that member";
// Allow warn
return true;
};