All files / src/common/guards CommandConfig.guard.ts

0% Statements 0/12
0% Branches 0/2
0% Functions 0/2
0% Lines 0/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29                                                         
import { LOCALIZATION_ADAPTER, NestedLocalizationAdapter } from "@necord/localization";
import { CanActivate, ExecutionContext, Inject, Injectable } from "@nestjs/common";
import { Reflector } from "@nestjs/core";
import { ChatInputCommandInteraction } from "discord.js";
import { NecordExecutionContext } from "necord";
import { CommandConfig } from "../decorators";
 
@Injectable()
export class CommandConfigGuard implements CanActivate {
	public constructor(
		@Inject(LOCALIZATION_ADAPTER) private readonly translate: NestedLocalizationAdapter,
		private readonly reflector: Reflector,
	) {}
 
	public async canActivate(executionContext: ExecutionContext): Promise<boolean> {
		const commandConfig = this.reflector.get(CommandConfig.KEY, executionContext.getHandler());
		const context = NecordExecutionContext.create(executionContext);
		const args = context.getArgByIndex(0);
		const interaction = args[0] as ChatInputCommandInteraction;
 
		if (commandConfig.disable) {
			interaction.reply(this.translate.getTranslation("Tools.Command.Checker.Disable", interaction.guildLocale));
			return false;
		}
 
		return true;
	}
}