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

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

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

revision 51 by rakin, Mon Jul 29 17:28:23 2024 UTC revision 344 by rakin, Mon Jul 29 17:29:40 2024 UTC
# Line 1  Line 1 
1  import { BanOptions, CommandInteraction, Guild, GuildMember, Interaction, Message, User } from 'discord.js';  import { CommandInteraction, GuildMember, Message, Permissions, User } from 'discord.js';
2  import BaseCommand from '../../utils/structures/BaseCommand';  import BaseCommand from '../../utils/structures/BaseCommand';
3  import DiscordClient from '../../client/Client';  import DiscordClient from '../../client/Client';
4  import CommandOptions from '../../types/CommandOptions';  import CommandOptions from '../../types/CommandOptions';
5  import InteractionOptions from '../../types/InteractionOptions';  import InteractionOptions from '../../types/InteractionOptions';
6  import MessageEmbed from '../../client/MessageEmbed';  import MessageEmbed from '../../client/MessageEmbed';
 import getUser from '../../utils/getUser';  
 import History from '../../automod/History';  
7  import getMember from '../../utils/getMember';  import getMember from '../../utils/getMember';
 import ms from 'ms';  
8    
9  export async function unmute(client: DiscordClient, user: GuildMember, msg: Message | CommandInteraction, d: User) {  import PunishmentType from '../../types/PunishmentType';
10    
11    export async function unmute(client: DiscordClient, user: GuildMember, d: User) {
12      try {                  try {            
13          await History.create(user.id, msg.guild!, 'unmute', msg.member!.user.id, null);          const role = await user.guild!.roles.fetch(client.config.props[user.guild.id].mute_role);
14            try {
15                await user.roles.remove(role!, 'Unmuting user');
16            }
17            catch (e) {
18                console.log(e);
19            }
20    
21          const role = await msg.guild!.roles.fetch(client.config.get('mute_role'));          const { default: Punishment } = await import('../../models/Punishment');
         await user.roles.remove(role!);  
22    
23          await user.send({          const { getTimeouts, clearTimeoutv2 } = await import('../../utils/setTimeout');
24              embeds: [  
25                  new MessageEmbed()          const { default: Hardmute } = await import("../../models/Hardmute");
26                  .setAuthor({          const { default: MuteRecord } = await import("../../models/MuteRecord");
27                      iconURL: <string> msg.guild!.iconURL(),  
28                      name: `\tYou have been unmuted in ${msg.guild!.name}`          const hardmute = await Hardmute.findOne({
29                  })              user_id: user.id,
30              ]              guild_id: user.guild.id
31            });
32    
33            if (hardmute) {
34                for await (const roleID of hardmute.roles) {
35                    try {
36                        const role = await user.guild.roles.fetch(roleID);
37    
38                        if (role) {
39                            await user.roles.add(role, 'Adding the roles which were removed due to hardmute');
40                        }
41                    }
42                    catch (e) {
43                        console.log(e);                    
44                    }
45                }
46    
47                await hardmute.delete();
48            }
49    
50            const timeouts = getTimeouts();
51            
52            for (const timeout of timeouts.values()) {
53                if (timeout.row.params) {
54                    try {
55                        const json = JSON.parse(timeout.row.params);
56    
57                        if (json) {
58                            if (json[1] === user.id && timeout.row.filePath.endsWith('unmute-job')) {
59                                await clearTimeoutv2(timeout);
60                            }
61                        }
62                    }
63                    catch (e) {
64                        console.log(e);                    
65                    }
66                }
67            }
68    
69            await Punishment.create({
70                type: PunishmentType.UNMUTE,
71                user_id: user.id,
72                guild_id: user.guild!.id,
73                mod_id: d.id,
74                mod_tag: d.tag,
75                createdAt: new Date()
76          });          });
77    
78            const muteRecord = await MuteRecord.findOne({
79                user_id: user.user.id,
80                guild_id: user.guild.id
81            });
82    
83            if (muteRecord) {
84                await muteRecord.delete();
85            }
86    
87            try {
88                await user.send({
89                    embeds: [
90                        new MessageEmbed()
91                        .setAuthor({
92                            iconURL: <string> user.guild!.iconURL(),
93                            name: `\tYou have been unmuted in ${user.guild!.name}`
94                        })
95                    ]
96                });
97            }
98            catch (e) {
99                console.log(e);
100            }
101    
102          await client.logger.logUnmute(user, d);          await client.logger.logUnmute(user, d);
103      }      }
104      catch (e) {      catch (e) {
# Line 35  export async function unmute(client: Dis Line 108  export async function unmute(client: Dis
108    
109  export default class UnmuteCommand extends BaseCommand {  export default class UnmuteCommand extends BaseCommand {
110      supportsInteractions: boolean = true;      supportsInteractions: boolean = true;
111        permissions = [Permissions.FLAGS.MODERATE_MEMBERS];
112    
113      constructor() {      constructor() {
114          super('unmute', 'moderation', []);          super('unmute', 'moderation', []);
# Line 53  export default class UnmuteCommand exten Line 127  export default class UnmuteCommand exten
127              return;              return;
128          }          }
129    
130            if (msg instanceof CommandInteraction)  
131                await msg.deferReply();
132    
133          let user: GuildMember;          let user: GuildMember;
134    
135          if (options.isInteraction) {          if (options.isInteraction) {
136              user = await <GuildMember> options.options.getMember('member');              user = await <GuildMember> options.options.getMember('member');
137    
138              if (!user) {              if (!user) {
139                  await msg.reply({                  await this.deferReply(msg, {
140                      embeds: [                      embeds: [
141                          new MessageEmbed()                          new MessageEmbed()
142                          .setColor('#f14a60')                          .setColor('#f14a60')
# Line 81  export default class UnmuteCommand exten Line 158  export default class UnmuteCommand exten
158                  user = user2;                  user = user2;
159              }              }
160              catch (e) {              catch (e) {
161                  await msg.reply({                  await this.deferReply(msg, {
162                      embeds: [                      embeds: [
163                          new MessageEmbed()                          new MessageEmbed()
164                          .setColor('#f14a60')                          .setColor('#f14a60')
# Line 95  export default class UnmuteCommand exten Line 172  export default class UnmuteCommand exten
172              console.log(user);              console.log(user);
173          }          }
174    
175          await unmute(client, user, msg, msg.member!.user as User);          await unmute(client, user, msg.member!.user as User);
176    
177          await msg.reply({          await this.deferReply(msg, {
178              embeds: [              embeds: [
179                  new MessageEmbed()                  new MessageEmbed()
180                  .setAuthor({                  .setAuthor({
# Line 114  export default class UnmuteCommand exten Line 191  export default class UnmuteCommand exten
191              ]              ]
192          });          });
193      }      }
 }  
194    }

Legend:
Removed from v.51  
changed lines
  Added in v.344

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26