refactor(arabot): change outreach command for outreach leader only

This commit is contained in:
Anthony Berg 2024-02-13 19:31:49 +00:00
parent a9039572d1
commit c82d256be4
4 changed files with 65 additions and 6 deletions

View File

@ -66,7 +66,6 @@ export class OutreachCommand extends Subcommand {
],
},
],
preconditions: ['ModOnly'],
});
}
@ -200,13 +199,13 @@ export class OutreachCommand extends Subcommand {
if (mod === undefined) {
await interaction.reply({
content: 'Mod was not found!',
content: 'Outreach Leader was not found!',
ephemeral: true,
});
return;
}
if (!mod.roles.cache.has(IDs.roles.staff.outreachCoordinator)) {
if (!mod.roles.cache.has(IDs.roles.staff.outreachLeader)) {
await interaction.reply({
content: 'You need to be an Outreach Coordinator to run this command!',
ephemeral: true,
@ -254,9 +253,9 @@ export class OutreachCommand extends Subcommand {
return;
}
if (!mod.roles.cache.has(IDs.roles.staff.outreachCoordinator)) {
if (!mod.roles.cache.has(IDs.roles.staff.outreachLeader)) {
await interaction.reply({
content: 'You need to be an Outreach Coordinator to run this command!',
content: 'You need to be an Outreach Leader to run this command!',
ephemeral: true,
});
return;
@ -442,7 +441,7 @@ export class OutreachCommand extends Subcommand {
if (
leader.id !== stat.stat.leaderId &&
!leaderMember.roles.cache.has(IDs.roles.staff.outreachCoordinator)
!leaderMember.roles.cache.has(IDs.roles.staff.outreachLeader)
) {
await interaction.editReply({
content: `You are not the leader for ${group}`,

View File

@ -0,0 +1,58 @@
// SPDX-License-Identifier: GPL-3.0-or-later
/*
Animal Rights Advocates Discord Bot
Copyright (C) 2022 Anthony Berg
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { AllFlowsPrecondition } from '@sapphire/framework';
import type {
CommandInteraction,
ContextMenuCommandInteraction,
Message,
GuildMember,
} from 'discord.js';
import IDs from '#utils/ids';
export class OutreachLeaderOnlyPrecondition extends AllFlowsPrecondition {
public override async messageRun(message: Message) {
// for message command
return this.checkCoordinator(message.member!);
}
public override async chatInputRun(interaction: CommandInteraction) {
// for slash command
return this.checkCoordinator(interaction.member! as GuildMember);
}
public override async contextMenuRun(
interaction: ContextMenuCommandInteraction,
) {
// for context menu command
return this.checkCoordinator(interaction.member! as GuildMember);
}
private async checkCoordinator(user: GuildMember) {
return user.roles.cache.has(IDs.roles.staff.outreachLeader)
? this.ok()
: this.error({ message: 'Only outreach leaders can run this command!' });
}
}
declare module '@sapphire/framework' {
interface Preconditions {
OutreachLeaderOnly: never;
}
}

View File

@ -60,6 +60,7 @@ const devIDs = {
outreachCoordinator: '999431675140382807',
mediaCoordinator: '1204801056404676618',
hrCoordinator: '1204795893480431657',
outreachLeader: '999431675123597409',
restricted: '999431675123597407',
moderator: '999431675123597408',
trialModerator: '999431675123597404',

View File

@ -62,6 +62,7 @@ let IDs = {
outreachCoordinator: '954804769476730890',
mediaCoordinator: '1203778509449723914',
hrCoordinator: '1203802120180989993',
outreachLeader: '730915698544607232',
restricted: '851624392928264222',
moderator: '826157475815489598',
trialModerator: '982074555596152904',