Add pardonuser command
This commit is contained in:
parent
f5b18513d2
commit
a2279ef93c
|
@ -71,6 +71,17 @@ export const data = new SlashCommandBuilder()
|
|||
.setMaxLength(4)
|
||||
.setRequired(true)
|
||||
)
|
||||
)
|
||||
.addSubcommand(pardonuser =>
|
||||
pardonuser
|
||||
.setName("pardonuser")
|
||||
.setDescription("Pardon a user from confessions")
|
||||
.addUserOption(user =>
|
||||
user
|
||||
.setName("user")
|
||||
.setDescription("The user to pardon")
|
||||
.setRequired(true)
|
||||
)
|
||||
);
|
||||
|
||||
export async function execute(interaction: ChatInputCommandInteraction) {
|
||||
|
@ -172,7 +183,7 @@ export async function execute(interaction: ChatInputCommandInteraction) {
|
|||
}
|
||||
// /confessmod pardon <id>
|
||||
} else if (interaction.options.getSubcommand() === "pardon") {
|
||||
const result = dt.removeBan(guildId, interaction.options.getString("id")!);
|
||||
const result = dt.removeBanById(guildId, interaction.options.getString("id")!);
|
||||
|
||||
try {
|
||||
return result
|
||||
|
@ -187,6 +198,24 @@ export async function execute(interaction: ChatInputCommandInteraction) {
|
|||
} catch (err) {
|
||||
logger.error("An unban interaction error occured:", err);
|
||||
}
|
||||
} else if (interaction.options.getSubcommand() === "pardonuser") {
|
||||
const { id: userId } = interaction.options.getUser("user")!;
|
||||
|
||||
const result = dt.removeBanByUser(guildId, userId);
|
||||
|
||||
try {
|
||||
return result
|
||||
? interaction.reply({
|
||||
content: "User was unbanned.",
|
||||
ephemeral: true
|
||||
})
|
||||
: interaction.reply({
|
||||
content: "That user is not banned from confessions.",
|
||||
ephemeral: true
|
||||
});
|
||||
} catch (err) {
|
||||
logger.error("An unban user interaction error occured:", err);
|
||||
}
|
||||
}
|
||||
|
||||
return interaction.reply({
|
||||
|
|
|
@ -302,7 +302,7 @@ export class StoreMan {
|
|||
}
|
||||
|
||||
// Attempts to pardon a user from a ban. If sucessfully completed, returns true, false if otherwise.
|
||||
public removeBan(guildId: string, confessionId: string): boolean {
|
||||
public removeBanById(guildId: string, confessionId: string): boolean {
|
||||
for (const guild of this.data) {
|
||||
if (guild.id === guildId) {
|
||||
if (this.getConfession(guildId, confessionId)) {
|
||||
|
@ -320,4 +320,23 @@ export class StoreMan {
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
public removeBanByUser(guildId: string, userId: string): boolean {
|
||||
for (const guild of this.data) {
|
||||
if (guild.id === guildId) {
|
||||
for (const ban of guild.settings.bans) {
|
||||
if (ban.method === BanReason.ByUser && ban.user === userId) {
|
||||
guild.settings.bans = guild.settings.bans.filter(ban => {
|
||||
return ban.user !== userId;
|
||||
});
|
||||
|
||||
this.saveFile();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue