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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
// import { BushCommand, ModLog, ModLogModel, type BushGuildMember, type BushMessage, type BushSlashMessage } from '#lib';
// import { FindOptions, Op } from 'sequelize';
// const punishmentTypes = ['ban', 'kick', 'mute', 'warn', 'role'] as const;
// export default class ActivePunishmentsCommand extends BushCommand {
// public constructor() {
// super('active-punishments', {
// aliases: ['active-punishments', 'ap'],
// category: 'moderation',
// description: 'Gets a list of all the active punishment in the server.',
// usage: [`active-punishments [--moderator <user>] [--type <${punishmentTypes.map((v) => `'${v}'`).join('|')}>]`],
// examples: ['active-punishments'],
// args: [
// {
// id: 'moderator',
// description: 'Only show active punishments by this moderator.',
// type: 'user',
// match: 'option',
// prompt: 'Only show active punishments from what user?',
// optional: true,
// slashType: 'USER',
// slashResolve: 'member'
// },
// {
// id: 'type',
// description: 'Only show active punishments of this type.',
// customType: [...punishmentTypes],
// readableType: punishmentTypes.map((v) => `'${v}'`).join('|'),
// match: 'option',
// optional: true,
// slashType: 'STRING',
// choices: punishmentTypes.map((v) => ({ name: v, value: v }))
// }
// ],
// slash: true,
// channel: 'guild',
// hidden: true,
// clientPermissions: (m) => util.clientSendAndPermCheck(m),
// userPermissions: (m) => util.userGuildPermCheck(m, ['MANAGE_MESSAGES'])
// });
// }
// public override async exec(
// message: BushMessage | BushSlashMessage,
// args: { moderator?: BushGuildMember; type: typeof punishmentTypes[number] }
// ) {
// const where: FindOptions<ModLogModel>['where'] = { guild: message.guild!.id };
// if (args.moderator?.id) where.user = args.moderator.id;
// if (args.type) {
// switch (args.type) {
// case 'ban':
// where.type = { [Op.or]: ['PERM_BAN', 'TEMP_BAN', 'UNBAN'] };
// break;
// case 'kick':
// where.type = { [Op.or]: ['KICK'] };
// break;
// case 'mute':
// where.type = { [Op.or]: ['PERM_MUTE', 'TEMP_MUTE', 'UNMUTE'] };
// break;
// case 'warn':
// where.type = { [Op.or]: ['WARN'] };
// break;
// case 'role':
// where.type = { [Op.or]: ['PERM_PUNISHMENT_ROLE', 'TEMP_PUNISHMENT_ROLE', 'REMOVE_PUNISHMENT_ROLE'] };
// break;
// default:
// return message.util.reply(`${util.emojis.error} You supplied an invalid case type to filter by.`);
// }
// }
// const logs = await ModLog.findAll({
// where,
// order: [['createdAt', 'ASC']]
// });
// }
// }
|