aboutsummaryrefslogtreecommitdiff
path: root/src/commands/moderation/evidence.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands/moderation/evidence.ts')
-rw-r--r--src/commands/moderation/evidence.ts32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/commands/moderation/evidence.ts b/src/commands/moderation/evidence.ts
index 362f471..68d7edc 100644
--- a/src/commands/moderation/evidence.ts
+++ b/src/commands/moderation/evidence.ts
@@ -1,4 +1,4 @@
-import { BushCommand, ModLog, type BushMessage, type BushSlashMessage } from '#lib';
+import { BushCommand, ModLog, OptionalArgType, type BushMessage, type BushSlashMessage } from '#lib';
import assert from 'assert';
import { ArgumentGeneratorReturn } from 'discord-akairo';
import { ArgumentTypeCasterReturn } from 'discord-akairo/dist/src/struct/commands/arguments/Argument.js';
@@ -64,7 +64,7 @@ export default class EvidenceCommand extends BushCommand {
public override async exec(
message: BushMessage | BushSlashMessage,
- { case_id: caseID, evidence }: { case_id: string; evidence?: string }
+ { case_id: caseID, evidence }: { case_id: string; evidence: OptionalArgType<'string'> }
) {
assert(message.inGuild());
@@ -72,14 +72,11 @@ export default class EvidenceCommand extends BushCommand {
if (!entry || entry.pseudo) return message.util.send(`${util.emojis.error} Invalid modlog entry.`);
if (entry.guild !== message.guild.id) return message.util.reply(`${util.emojis.error} This modlog is from another server.`);
- if (evidence && (message as BushMessage).attachments?.size)
- return message.util.reply(`${util.emojis.error} Please either attach an image or a reason not both.`);
-
- const _evidence = evidence ? evidence : !message.util.isSlash ? (message as BushMessage).attachments.first()?.url : undefined;
- if (!_evidence) return message.util.reply(`${util.emojis.error} You must provide evidence for this modlog.`);
-
const oldEntry = entry.evidence;
+ const _evidence = EvidenceCommand.getEvidence(message, evidence);
+ if (!_evidence) return;
+
entry.evidence = _evidence.trim();
await entry.save();
@@ -87,4 +84,23 @@ export default class EvidenceCommand extends BushCommand {
return message.util.reply(`${util.emojis.success} Successfully updated the evidence for case ${util.format.input(caseID)}.`);
}
+
+ public static getEvidence(message: BushMessage | BushSlashMessage, evidenceArg: OptionalArgType<'string'>): null | string {
+ if (evidenceArg && (message as BushMessage).attachments?.size) {
+ void message.util.reply(`${util.emojis.error} Please either attach an image or a reason not both.`);
+ return null;
+ }
+
+ const _evidence = evidenceArg
+ ? evidenceArg
+ : !message.util.isSlash
+ ? (message as BushMessage).attachments.first()?.url
+ : undefined;
+ if (!_evidence) {
+ void message.util.reply(`${util.emojis.error} You must provide evidence for this modlog.`);
+ return null;
+ }
+
+ return _evidence;
+ }
}