/[sudobot]/trunk/src/commands/moderation/WarningsCommand.ts
ViewVC logotype

Annotation of /trunk/src/commands/moderation/WarningsCommand.ts

Parent Directory Parent Directory | Revision Log Revision Log


Revision 51 - (hide annotations)
Mon Jul 29 17:28:23 2024 UTC (8 months, 1 week ago) by rakin
File MIME type: application/typescript
File size: 3317 byte(s)
Release version 2.0
1 rakin 51 import { BanOptions, CommandInteraction, Guild, GuildMember, Interaction, Message, User } from 'discord.js';
2     import BaseCommand from '../../utils/structures/BaseCommand';
3     import DiscordClient from '../../client/Client';
4     import CommandOptions from '../../types/CommandOptions';
5     import InteractionOptions from '../../types/InteractionOptions';
6     import MessageEmbed from '../../client/MessageEmbed';
7     import getUser from '../../utils/getUser';
8     import History from '../../automod/History';
9     import getMember from '../../utils/getMember';
10     import ms from 'ms';
11    
12     export default class WarningsCommand extends BaseCommand {
13     supportsInteractions: boolean = true;
14    
15     constructor() {
16     super('warnings', 'moderation', []);
17     }
18    
19     async run(client: DiscordClient, msg: Message | CommandInteraction, options: CommandOptions | InteractionOptions) {
20     let user: GuildMember | null | undefined;
21    
22     if (options.isInteraction) {
23     if (options.options.getMember('member'))
24     user = await <GuildMember> options.options.getMember('member');
25     }
26     else {
27     if (options.args[0]) {
28     try {
29     user = await getMember(msg as Message, options);
30    
31     if (!user) {
32     throw new Error();
33     }
34     }
35     catch (e) {
36     await msg.reply({
37     embeds: [
38     new MessageEmbed()
39     .setColor('#f14a60')
40     .setDescription(`Invalid user given.`)
41     ]
42     });
43    
44     return;
45     }
46     }
47     }
48    
49     var test = false;
50    
51     if (!user) {
52     var args1: [string, string[]] = ['SELECT * FROM warnings WHERE guild_id = ?', [msg.guild!.id]];
53     var a: any = {
54     name: `All warnings`
55     };
56     }
57     else {
58     var args1: [string, string[]] = ['SELECT id, user_id, guild_id, reason FROM warnings WHERE user_id = ? AND guild_id = ?', [user.id, msg.guild!.id]];
59     var a: any = {
60     iconURL: user.displayAvatarURL(),
61     name: `All warnings for ${user.user.tag} in ${msg.guild!.name}`
62     };
63    
64     test = true;
65     }
66    
67     await client.db.all(...args1, async (err: any, data: any) => {
68     if (err) {
69     console.log(err);
70     }
71    
72     let i = 0;
73    
74     let warnings = await data.map((value: any) => {
75     i++;
76     return {
77     name: "Warning " + i + " (ID: " + value.id + (!test ? ", To: " + value.user_id : "") + ")",
78     value: value.reason === '\c\b\c' ? "No reason provided" : value.reason
79     };
80     });
81    
82     if (test) {
83     warnings.push(
84     {
85     name: "Strike",
86     value: i + ' time(s)'
87     }
88     );
89     }
90    
91     await msg.reply({
92     embeds: [
93     new MessageEmbed()
94     .setAuthor(a)
95     .addFields(warnings)
96     ]
97     });
98     });
99     }
100     }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26