/[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 106 by rakin, Mon Jul 29 17:28:37 2024 UTC revision 400 by rakin, Mon Jul 29 17:30:02 2024 UTC
# Line 1  Line 1 
1  import { BanOptions, CommandInteraction, Guild, GuildMember, Interaction, Message, User } from 'discord.js';  /**
2    * This file is part of SudoBot.
3    *
4    * Copyright (C) 2021-2022 OSN Inc.
5    *
6    * SudoBot is free software; you can redistribute it and/or modify it
7    * under the terms of the GNU Affero General Public License as published by
8    * the Free Software Foundation, either version 3 of the License, or
9    * (at your option) any later version.
10    *
11    * SudoBot is distributed in the hope that it will be useful, but
12    * WITHOUT ANY WARRANTY; without even the implied warranty of
13    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14    * GNU Affero General Public License for more details.
15    *
16    * You should have received a copy of the GNU Affero General Public License
17    * along with SudoBot. If not, see <https://www.gnu.org/licenses/>.
18    */
19    
20    import { CommandInteraction, GuildMember, Message, Permissions, User } from 'discord.js';
21  import BaseCommand from '../../utils/structures/BaseCommand';  import BaseCommand from '../../utils/structures/BaseCommand';
22  import DiscordClient from '../../client/Client';  import DiscordClient from '../../client/Client';
23  import CommandOptions from '../../types/CommandOptions';  import CommandOptions from '../../types/CommandOptions';
24  import InteractionOptions from '../../types/InteractionOptions';  import InteractionOptions from '../../types/InteractionOptions';
25  import MessageEmbed from '../../client/MessageEmbed';  import MessageEmbed from '../../client/MessageEmbed';
 import getUser from '../../utils/getUser';  
 import History from '../../automod/History';  
26  import getMember from '../../utils/getMember';  import getMember from '../../utils/getMember';
 import ms from 'ms';  
27    
28  import PunishmentType from '../../types/PunishmentType';  import PunishmentType from '../../types/PunishmentType';
29    
30  export async function unmute(client: DiscordClient, user: GuildMember, d: User) {  export async function unmute(client: DiscordClient, user: GuildMember, d: User) {
31      try {                  try {            
         await History.create(user.id, user.guild!, 'unmute', d.id, null);  
   
32          const role = await user.guild!.roles.fetch(client.config.props[user.guild.id].mute_role);          const role = await user.guild!.roles.fetch(client.config.props[user.guild.id].mute_role);
33          await user.roles.remove(role!);          try {
34                await user.roles.remove(role!, 'Unmuting user');
35                console.log("did that");
36            }
37            catch (e) {
38                console.log(e);
39            }
40    
41          const { default: Punishment } = await import('../../models/Punishment');          const { default: Punishment } = await import('../../models/Punishment');
42    
43          const { getTimeouts, clearTimeoutv2 } = await import('../../utils/setTimeout');          const { getTimeouts, clearTimeoutv2 } = await import('../../utils/setTimeout');
44    
45            const { default: Hardmute } = await import("../../models/Hardmute");
46            const { default: MuteRecord } = await import("../../models/MuteRecord");
47    
48            const hardmute = await Hardmute.findOne({
49                user_id: user.id,
50                guild_id: user.guild.id
51            });
52    
53            if (hardmute) {
54                for await (const roleID of hardmute.roles) {
55                    try {
56                        const role = await user.guild.roles.fetch(roleID);
57    
58                        if (role) {
59                            await user.roles.add(role, 'Adding the roles which were removed due to hardmute');
60                        }
61                    }
62                    catch (e) {
63                        console.log(e);                    
64                    }
65                }
66    
67                await hardmute.delete();
68            }
69    
70          const timeouts = getTimeouts();          const timeouts = getTimeouts();
71                    
72          for (const timeout of timeouts.values()) {          for (const timeout of timeouts.values()) {
# Line 47  export async function unmute(client: Dis Line 92  export async function unmute(client: Dis
92              guild_id: user.guild!.id,              guild_id: user.guild!.id,
93              mod_id: d.id,              mod_id: d.id,
94              mod_tag: d.tag,              mod_tag: d.tag,
95                createdAt: new Date()
96          });          });
97    
98          await user.send({          const muteRecord = await MuteRecord.findOne({
99              embeds: [              user_id: user.user.id,
100                  new MessageEmbed()              guild_id: user.guild.id
                 .setAuthor({  
                     iconURL: <string> user.guild!.iconURL(),  
                     name: `\tYou have been unmuted in ${user.guild!.name}`  
                 })  
             ]  
101          });          });
102    
103            if (muteRecord) {
104                await muteRecord.delete();
105            }
106    
107            try {
108                await user.send({
109                    embeds: [
110                        new MessageEmbed()
111                        .setAuthor({
112                            iconURL: <string> user.guild!.iconURL(),
113                            name: `\tYou have been unmuted in ${user.guild!.name}`
114                        })
115                    ]
116                });
117            }
118            catch (e) {
119                console.log(e);
120            }
121    
122          await client.logger.logUnmute(user, d);          await client.logger.logUnmute(user, d);
123      }      }
124      catch (e) {      catch (e) {
# Line 68  export async function unmute(client: Dis Line 128  export async function unmute(client: Dis
128    
129  export default class UnmuteCommand extends BaseCommand {  export default class UnmuteCommand extends BaseCommand {
130      supportsInteractions: boolean = true;      supportsInteractions: boolean = true;
131        permissions = [Permissions.FLAGS.MODERATE_MEMBERS];
132    
133      constructor() {      constructor() {
134          super('unmute', 'moderation', []);          super('unmute', 'moderation', []);
# Line 86  export default class UnmuteCommand exten Line 147  export default class UnmuteCommand exten
147              return;              return;
148          }          }
149    
150            if (msg instanceof CommandInteraction)  
151                await msg.deferReply();
152    
153          let user: GuildMember;          let user: GuildMember;
154    
155          if (options.isInteraction) {          if (options.isInteraction) {
156              user = await <GuildMember> options.options.getMember('member');              user = await <GuildMember> options.options.getMember('member');
157    
158              if (!user) {              if (!user) {
159                  await msg.reply({                  await this.deferReply(msg, {
160                      embeds: [                      embeds: [
161                          new MessageEmbed()                          new MessageEmbed()
162                          .setColor('#f14a60')                          .setColor('#f14a60')
# Line 114  export default class UnmuteCommand exten Line 178  export default class UnmuteCommand exten
178                  user = user2;                  user = user2;
179              }              }
180              catch (e) {              catch (e) {
181                  await msg.reply({                  await this.deferReply(msg, {
182                      embeds: [                      embeds: [
183                          new MessageEmbed()                          new MessageEmbed()
184                          .setColor('#f14a60')                          .setColor('#f14a60')
# Line 130  export default class UnmuteCommand exten Line 194  export default class UnmuteCommand exten
194    
195          await unmute(client, user, msg.member!.user as User);          await unmute(client, user, msg.member!.user as User);
196    
197          await msg.reply({          await this.deferReply(msg, {
198              embeds: [              embeds: [
199                  new MessageEmbed()                  new MessageEmbed()
200                  .setAuthor({                  .setAuthor({
# Line 147  export default class UnmuteCommand exten Line 211  export default class UnmuteCommand exten
211              ]              ]
212          });          });
213      }      }
 }  
214    }

Legend:
Removed from v.106  
changed lines
  Added in v.400

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26