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

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

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

revision 125 by rakin, Mon Jul 29 17:28:41 2024 UTC revision 393 by rakin, Mon Jul 29 17:29:59 2024 UTC
# Line 1  Line 1 
1  import { BanOptions, CommandInteraction, ContextMenuInteraction, EmojiIdentifierResolvable, GuildMember, Interaction, InteractionCollector, Message, MessageActionRow, MessageButton, MessageOptions, ReplyOptions, TextChannel, 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, ContextMenuInteraction, Interaction, InteractionCollector, Message, MessageActionRow, MessageButton, 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';
26  import getUser from '../../utils/getUser';  import getUser from '../../utils/getUser';
 import getMember from '../../utils/getMember';  
 import History from '../../automod/History';  
 import { fetchEmoji } from '../../utils/Emoji';  
27  import Punishment from '../../models/Punishment';  import Punishment from '../../models/Punishment';
28  import PunishmentType from '../../types/PunishmentType';  import PunishmentType from '../../types/PunishmentType';
29    
# Line 23  export default class HistoryCommand exte Line 39  export default class HistoryCommand exte
39          const limit = 3;          const limit = 3;
40          const offset = ((page < 1 ? 1 : page) - 1) * limit;          const offset = ((page < 1 ? 1 : page) - 1) * limit;
41    
42          const logs = await Punishment.findAndCountAll({          const logs = await Punishment.find({
43              where: {              guild_id: msg.guild!.id,
44                  guild_id: msg.guild!.id,              user_id: user.id,
45                  user_id: user.id          }).skip(offset).limit(limit).sort({ createdAt: -1 });
             },  
             order: [  
                 ['createdAt', 'DESC']  
             ],  
             limit,  
             offset  
         });  
46    
47          let str = '';          let str = '';
48          const maxPage = Math.ceil(logs.count / limit);          
49            const maxPage = Math.ceil((await Punishment.count({
50                guild_id: msg.guild!.id,
51                user_id: user.id,
52            })) / limit);
53    
54          const convert = (type: PunishmentType) => {                      const convert = (type: PunishmentType) => {            
55              switch (type) {              switch (type) {
# Line 46  export default class HistoryCommand exte Line 59  export default class HistoryCommand exte
59                      return 'Soft Ban';                      return 'Soft Ban';
60                  case PunishmentType.TEMPBAN:                  case PunishmentType.TEMPBAN:
61                      return 'Temporary Ban';                      return 'Temporary Ban';
62                  case PunishmentType.BEAN:                  case PunishmentType.SHOT:
63                      return 'Bean';                      return 'Shot';
64                  case PunishmentType.MUTE:                  case PunishmentType.MUTE:
65                      return 'Mute';                      return 'Mute';
66                  case PunishmentType.HARDMUTE:                  case PunishmentType.HARDMUTE:
# Line 65  export default class HistoryCommand exte Line 78  export default class HistoryCommand exte
78              }              }
79          };          };
80    
81          for await (const log of logs.rows) {          for await (const log of logs) {
82              str += `**Case ID**: ${log.get().id}\n`;              str += `**Case ID**: ${log.id}\n`;
83              str += `Type: ${convert(log.get().type)}\n`;              str += `Type: ${convert(log.type as PunishmentType)}\n`;
84              str += `Reason: ${log.get().reason ? (log.get().reason.trim() === '' ? '*No reason provided*' : log.get().reason) : '*No reason provided*'}\n`;              str += `Reason: ${log.reason ? (log.reason.trim() === '' ? '*No reason provided*' : log.reason) : '*No reason provided*'}\n`;
85    
86              // let mod_tag;              // let mod_tag;
87    
# Line 84  export default class HistoryCommand exte Line 97  export default class HistoryCommand exte
97              //     mod_tag = log.get().mod_id;              //     mod_tag = log.get().mod_id;
98              // }              // }
99    
100              str += `Action Executor: ${log.get().mod_tag}\n`;              str += `Action Executor: ${log.mod_tag}\n`;
101              str += `Date: ${log.get().createdAt.toLocaleString('en-US')}\n`;              str += `Date: ${log.createdAt.toLocaleString('en-US')}\n`;
102    
103              // if (log.get().type === PunishmentType.MUTE) {              // if (log.get().type === PunishmentType.MUTE) {
104              //     str += `Duration: ${(log.get().meta ? JSON.parse(log.get().meta) : {})?.time ?? '*No duration set*'}\n`;                            //     str += `Duration: ${(log.get().meta ? JSON.parse(log.get().meta) : {})?.time ?? '*No duration set*'}\n`;              
105              // }              // }
106    
107              if (log.get().meta) {              if (log.meta) {
108                  const json = typeof log.get().meta === 'string' ? JSON.parse(log.get().meta) : log.get().meta;                  const json = typeof log.meta === 'string' ? JSON.parse(log.meta) : log.meta;
109    
110                  if (Object.keys(json).length > 0) {                  if (Object.keys(json).length > 0) {
111                      str += "Additional Attributes:\n```\n";                      str += "Additional Attributes:\n```\n";
# Line 276  export default class HistoryCommand exte Line 289  export default class HistoryCommand exte
289              }              }
290          });          });
291      }      }
 }  
292    }

Legend:
Removed from v.125  
changed lines
  Added in v.393

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26