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

Diff of /trunk/src/commands/moderation/WarnCommand.ts

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 85 by rakin, Mon Jul 29 17:28:32 2024 UTC revision 336 by rakin, Mon Jul 29 17:29:36 2024 UTC
# Line 6  import InteractionOptions from '../../ty Line 6  import InteractionOptions from '../../ty
6  import MessageEmbed from '../../client/MessageEmbed';  import MessageEmbed from '../../client/MessageEmbed';
7  import getMember from '../../utils/getMember';  import getMember from '../../utils/getMember';
8  import PunishmentType from '../../types/PunishmentType';  import PunishmentType from '../../types/PunishmentType';
 import Punishment from '../../types/Punishment';  
9  import History from '../../automod/History';  import History from '../../automod/History';
10    
11  export async function warn(client: DiscordClient, user: User, reason: string | undefined, msg: Message | CommandInteraction, warned_by?: User) {      export async function warn(client: DiscordClient, user: User, reason: string | undefined, msg: Message | CommandInteraction, warned_by?: User) {  
12        const { default: Punishment } = await import('../../models/Punishment');
13    
14      const warning = await Punishment.create({      const warning = await Punishment.create({
15          guild_id: msg.guild!.id,          guild_id: msg.guild!.id,
16          user_id: user.id,          user_id: user.id,
17          reason,          reason,
18          mod_id: warned_by?.id ?? msg.member!.user.id,          mod_id: warned_by?.id ?? msg.member!.user.id,
19            mod_tag: warned_by?.tag ?? (msg.member!.user as User).tag,
20          type: PunishmentType.WARNING,          type: PunishmentType.WARNING,
21            createdAt: new Date()
22      });      });
23    
24      const strike = await Punishment.count({      const strike = await Punishment.count({
25          where: {          guild_id: msg.guild!.id,
26              guild_id: msg.guild!.id,          user_id: user.id,
27              user_id: user.id,          type: PunishmentType.WARNING,
             type: PunishmentType.WARNING,  
         }  
28      });      });
29    
30      await History.create(user.id, msg.guild!, 'warn', warned_by?.id ?? msg.member!.user.id, reason ?? null);      // await History.create(user.id, msg.guild!, 'warn', warned_by?.id ?? msg.member!.user.id, reason ?? null);
31    
32      await user.send({      let DMed = true;
         embeds: [  
             new MessageEmbed({  
                 author: {  
                     name: `You have been warned in ${msg.guild!.name}`,  
                     iconURL: msg.guild!.iconURL()!  
                 },  
                 fields: [  
                     {  
                         name: 'Reason',  
                         value: reason ?? '*No reason provided*'  
                     },  
                     {  
                         name: 'Strike',  
                         value: `${strike} time(s)`  
                     }  
                 ]  
             })  
         ]  
     });  
33    
34        try {
35            await user.send({
36                embeds: [
37                    new MessageEmbed({
38                        author: {
39                            name: `You have been warned in ${msg.guild!.name}`,
40                            iconURL: msg.guild!.iconURL()!
41                        },
42                        fields: [
43                            {
44                                name: 'Reason',
45                                value: reason ?? '*No reason provided*'
46                            },
47                            {
48                                name: 'Strike',
49                                value: `${strike} time(s)`
50                            }
51                        ]
52                    })
53                ]
54            });
55        }
56        catch (e) {
57            console.log(e);
58            DMed = false;  
59        }
60        
61      await client.logger.logWarn(msg, user, (warned_by ?? msg.member!.user) as User, reason, warning.get('id') as number);      await client.logger.logWarn(msg, user, (warned_by ?? msg.member!.user) as User, reason, warning.get('id') as number);
62    
63      return { warning, strike };      return { warning, strike, DMed };
64  }  }
65    
66  export default class WarnCommand extends BaseCommand {  export default class WarnCommand extends BaseCommand {
# Line 127  export default class WarnCommand extends Line 136  export default class WarnCommand extends
136          }          }
137    
138          try {          try {
139              const { warning, strike } = await warn(client, user.user, reason, msg, msg.member?.user as User);              const { warning, strike, DMed } = await warn(client, user.user, reason, msg, msg.member?.user as User);
140    
141              await msg.reply({              await msg.reply({
142                  embeds: [                  embeds: [
143                      new MessageEmbed()                      new MessageEmbed()
144                      .setDescription(`The user ${user.user.tag} has been warned`)                      .setDescription(`The user ${user.user.tag} has been warned` + (DMed ? "" : "\n:warning: The user has DMs disabled, so they might not know that they've been warned."))
145                      .addFields([                      .addFields([
146                          {                          {
147                              name: "Reason",                              name: "Reason",
# Line 158  export default class WarnCommand extends Line 167  export default class WarnCommand extends
167              console.log(e);                          console.log(e);            
168          }          }
169      }      }
 }  
170    }

Legend:
Removed from v.85  
changed lines
  Added in v.336

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26