aboutsummaryrefslogtreecommitdiff
path: root/src/commands/moderation
diff options
context:
space:
mode:
authorIRONM00N <64110067+IRONM00N@users.noreply.github.com>2021-09-06 15:20:46 -0400
committerIRONM00N <64110067+IRONM00N@users.noreply.github.com>2021-09-06 15:20:46 -0400
commit13306f17accea5d3653dd4b8670ba0d6ab69c7c5 (patch)
tree7075dcca19ed1164a166efac19c49311e93ffeee /src/commands/moderation
parenta8386e756758f243b75e5df4886224d2bf9f241c (diff)
downloadtanzanite-13306f17accea5d3653dd4b8670ba0d6ab69c7c5.tar.gz
tanzanite-13306f17accea5d3653dd4b8670ba0d6ab69c7c5.tar.bz2
tanzanite-13306f17accea5d3653dd4b8670ba0d6ab69c7c5.zip
evidence command and more logging
Diffstat (limited to 'src/commands/moderation')
-rw-r--r--src/commands/moderation/evidence.ts92
-rw-r--r--src/commands/moderation/hideCase.ts14
2 files changed, 70 insertions, 36 deletions
diff --git a/src/commands/moderation/evidence.ts b/src/commands/moderation/evidence.ts
index ae0a128..71a52b2 100644
--- a/src/commands/moderation/evidence.ts
+++ b/src/commands/moderation/evidence.ts
@@ -1,4 +1,5 @@
-import { BushCommand, BushMessage, BushSlashMessage } from '@lib';
+import { BushCommand, BushMessage, BushSlashMessage, ModLog } from '@lib';
+import { ArgumentOptions, Flag } from 'discord-akairo';
export default class EvidenceCommand extends BushCommand {
public constructor() {
@@ -7,54 +8,81 @@ export default class EvidenceCommand extends BushCommand {
category: 'moderation',
description: {
content: 'Add evidence to a modlog case.',
- usage: 'evidence <caseID> <evidence>',
+ usage: 'evidence <case_id> <evidence>',
examples: ['evidence ']
},
- args: [
- {
- id: 'case',
- type: 'string',
- prompt: {
- start: 'What would you like to set your first argument to be?',
- retry: '{error} Pick a valid argument.',
- optional: false
- }
- },
- {
- id: 'evidence',
- type: 'string',
- prompt: {
- start: 'What would you like to set your second argument to be?',
- retry: '{error} Pick a valid argument.',
- optional: true
- }
- }
- ],
slash: true,
slashOptions: [
{
- name: 'case',
- description: 'What would you like to set your first argument to be?',
+ name: 'case_id',
+ description: 'What case would you like to modify the evidence of?',
type: 'STRING',
required: true
},
{
name: 'evidence',
- description: 'What would you like to set your second argument to be?',
+ description: 'What would you like to modify the evidence to?',
type: 'STRING',
- required: false
+ required: true
}
],
- superUserOnly: true,
- ownerOnly: true,
channel: 'guild',
- hidden: true,
clientPermissions: ['SEND_MESSAGES'],
- userPermissions: ['SEND_MESSAGES']
+ userPermissions: ['SEND_MESSAGES', 'MANAGE_MESSAGES']
});
}
- public override async exec(message: BushMessage | BushSlashMessage): Promise<unknown> {
- return await message.util.reply(`${util.emojis.error} Soon:tm:.`);
+ *args(message: BushMessage): IterableIterator<ArgumentOptions | Flag> {
+ const case_id = yield {
+ id: 'case_id',
+ type: 'string',
+ prompt: {
+ start: 'What case would you like to modify the evidence of?',
+ retry: '{error} Pick a valid case to modify the evidence of.',
+ optional: false
+ }
+ };
+
+ const evidence = yield {
+ id: 'evidence',
+ type: 'string',
+ match: 'restContent',
+ prompt: {
+ start: 'What would you like to modify the evidence to?',
+ retry: '{error} Pick a valid argument.',
+ optional: !!message.attachments.some((attachment) => !!attachment.contentType?.includes('image'))
+ }
+ };
+
+ return { case_id, evidence };
+ }
+
+ public override async exec(
+ message: BushMessage | BushSlashMessage,
+ { case_id: caseID, evidence }: { case_id: string; evidence?: string }
+ ): Promise<unknown> {
+ const entry = await ModLog.findByPk(caseID);
+ 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;
+
+ entry.evidence = _evidence.trim();
+ await entry.save();
+
+ client.emit('bushUpdateModlog', message.member!, entry.id, 'evidence', oldEntry, entry.evidence);
+
+ return message.util.reply(`${util.emojis.success} Successfully updated the evidence for case \`${caseID}\`.`);
}
}
diff --git a/src/commands/moderation/hideCase.ts b/src/commands/moderation/hideCase.ts
index 6cd8e31..2529531 100644
--- a/src/commands/moderation/hideCase.ts
+++ b/src/commands/moderation/hideCase.ts
@@ -7,12 +7,12 @@ export default class HideCaseCommand extends BushCommand {
category: 'moderation',
description: {
content: 'Hide a particular modlog case from the modlog command unless the `--hidden` flag is specified',
- usage: 'hideCase <caseID>',
+ usage: 'hideCase <case_id>',
examples: ['hideCase 9210b1ea-91f5-4ea2-801b-02b394469c77']
},
args: [
{
- id: 'case',
+ id: 'case_id',
type: 'string',
prompt: {
start: 'What modlog case would you like to hide?',
@@ -24,7 +24,7 @@ export default class HideCaseCommand extends BushCommand {
slash: true,
slashOptions: [
{
- name: 'case',
+ name: 'case_id',
description: 'What modlog case would you like to hide?',
type: 'STRING',
required: true
@@ -34,7 +34,10 @@ export default class HideCaseCommand extends BushCommand {
});
}
- public override async exec(message: BushMessage | BushSlashMessage, { case: caseID }: { case: string }): Promise<unknown> {
+ public override async exec(
+ message: BushMessage | BushSlashMessage,
+ { case_id: caseID }: { case_id: string }
+ ): Promise<unknown> {
if (message.author.id === '496409778822709251')
return await message.util.reply(`${util.emojis.error} This command is Bestower proof.`);
const entry = await ModLog.findByPk(caseID);
@@ -42,9 +45,12 @@ export default class HideCaseCommand extends BushCommand {
if (entry.guild !== message.guild!.id)
return message.util.reply(`${util.emojis.error} This modlog is from another server.`);
const action = entry.hidden ? 'no longer hidden' : 'now hidden';
+ const oldEntry = entry.hidden;
entry.hidden = !entry.hidden;
await entry.save();
+ client.emit('bushUpdateModlog', message.member!, entry.id, 'hidden', oldEntry, entry.hidden);
+
return await message.util.reply(`${util.emojis.success} CaseID \`${caseID}\` is ${action}.`);
}
}