/[sudobot]/trunk/src/automod/Logger.ts
ViewVC logotype

Diff of /trunk/src/automod/Logger.ts

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

trunk/src/Logger.js revision 37 by rakin, Mon Jul 29 17:28:18 2024 UTC trunk/src/automod/Logger.ts revision 51 by rakin, Mon Jul 29 17:28:23 2024 UTC
# Line 1  Line 1 
1  const { MessageEmbed } = require('discord.js');  import { GuildBan, GuildMember, Message, MessageEmbed, TextChannel, User } from 'discord.js';
2  const util = require('./util');  import DiscordClient from '../client/Client';
3    import { timeProcess, timeSince } from '../utils/util';
4    
5  class Logger {  class Logger {
6      constructor() {      client: DiscordClient;
7            
8        constructor(client: DiscordClient) {
9            this.client = client;
10        }
11    
12        channel(callback: (channel: TextChannel) => any, msg: Message | GuildBan) {
13            let channelID = this.client.config.props[msg.guild!.id].logging_channel;
14            let channel = msg.guild!.channels.cache.find(c => c.id === channelID) as TextChannel;
15    
16            if (channel) {
17                return callback(channel);
18            }
19      }      }
20    
21      channel(callback, msg) {      channelJoinLeft(callback: (channel: TextChannel) => any, msg: Message | GuildBan) {
22          let channelID = app.config.props[msg.guild.id].logging_channel;          let channelID = this.client.config.props[msg.guild!.id].logging_channel_join_leave;
23          let channel = msg.guild.channels.cache.find(c => c.id === channelID);          let channel = msg.guild!.channels.cache.find(c => c.id === channelID) as TextChannel;
24    
25          if (channel) {          if (channel) {
26              return callback(channel);              return callback(channel);
27          }          }
28      }      }
29    
30      logEdit(oldMsg, newMsg) {      logEdit(oldMsg: Message, newMsg: Message) {
31          this.channel(async (channel) => {          this.channel(async (channel) => {
32              await channel.send({              await channel.send({
33                  embeds: [                  embeds: [
34                      new MessageEmbed()                      new MessageEmbed()
35                      .setColor('#007bff')                      .setColor('#007bff')
36                      .setTitle('Message Edited in #' + newMsg.channel.name + " (" + newMsg.channel.id + ")")                      .setTitle('Message Edited in #' + (newMsg.channel as TextChannel).name + " (" + newMsg.channel.id + ")")
37                      .setDescription('**-+-+Before**\n' + oldMsg.content + '\n\n**-+-+After**\n' + newMsg.content)                      .setDescription('**-+-+Before**\n' + oldMsg.content + '\n\n**-+-+After**\n' + newMsg.content)
38                      .addField('ID', newMsg.id)                      .addField('ID', newMsg.id)
39                      .setAuthor({                      .setAuthor({
# Line 37  class Logger { Line 49  class Logger {
49          }, newMsg);          }, newMsg);
50      }      }
51    
52      logDelete(msg) {      logDelete(msg: Message) {
53          this.channel(async (channel) => {          this.channel(async (channel) => {
54              const embed = new MessageEmbed()              const embed = new MessageEmbed()
55                  .setColor('#f14a60')                  .setColor('#f14a60')
56                  .setTitle('Message Deleted in #' + msg.channel.name + " (" + msg.channel.id + ")")                  .setTitle('Message Deleted in #' + (msg.channel as TextChannel).name + " (" + msg.channel.id + ")")
57                  .setDescription(msg.content)                  .setDescription(msg.content)
58                  .setAuthor({                  .setAuthor({
59                      name: msg.author.tag,                      name: msg.author.tag,
# Line 57  class Logger { Line 69  class Logger {
69                  let str = '';                  let str = '';
70    
71                  msg.attachments.forEach(a => {                  msg.attachments.forEach(a => {
72                      str += `**${a.name}** ${a.proxyURL}\n`;                      str += `**${a.name}** ${a.url}\n`;
73                  });                  });
74    
75                  embed.addField('Attachments', str);                  embed.addField('Attachments', str);
# Line 71  class Logger { Line 83  class Logger {
83          }, msg);          }, msg);
84      }      }
85    
86      logBanned(ban) {      logBanned(ban: GuildBan) {
87          this.channel(async (channel) => {          this.channel(async (channel) => {
88              let r = '*No reason provided*';              let r = '*No reason provided*';
89    
# Line 99  class Logger { Line 111  class Logger {
111          }, ban);          }, ban);
112      }      }
113    
114      logUnbanned(ban) {      logUnbanned(ban: GuildBan) {
115          this.channel(async (channel) => {          this.channel(async (channel) => {
116              await channel.send({              await channel.send({
117                  embeds: [                  embeds: [
# Line 120  class Logger { Line 132  class Logger {
132          }, ban);          }, ban);
133      }      }
134    
135      logJoined(member) {      logJoined(member: GuildMember) {
136          this.channel(async (channel) => {          this.channelJoinLeft(async (channel) => {
137              await channel.send({              await channel.send({
138                  embeds: [                  embeds: [
139                      new MessageEmbed()                      new MessageEmbed()
# Line 132  class Logger { Line 144  class Logger {
144                          iconURL: member.user.displayAvatarURL(),                          iconURL: member.user.displayAvatarURL(),
145                      })                      })
146                      .setDescription(`<@${member.user.id}> just joined the server!`)                      .setDescription(`<@${member.user.id}> just joined the server!`)
147                      .addField('Account Created', `${member.user.createdAt.toLocaleString()} (${util.timeSince(member.user.createdAt.getTime())} ago)`)                      .addField('Account Created', `${member.user.createdAt.toLocaleString()} (${timeSince(member.user.createdAt.getTime())})`)
148                      .addField('New Account?', (new Date().getTime() - member.user.createdAt.getTime()) <= 3 * 24 * 60 * 60 * 1000 ? ":warning: Yes :warning:" : "No")                      .addField('New Account?', (new Date().getTime() - member.user.createdAt.getTime()) <= 3 * 24 * 60 * 60 * 1000 ? ":warning: Yes :warning:" : "No")
149                      .addField('Bot?', member.user.bot === true ? 'Yes' : 'No')                      .addField('Bot?', member.user.bot === true ? 'Yes' : 'No')
150                      .addField('User ID', member.user.id)                      .addField('User ID', member.user.id)
# Line 145  class Logger { Line 157  class Logger {
157          }, member);          }, member);
158      }      }
159    
160      logLeft(member) {      logLeft(member: GuildMember) {
161          this.channel(async (channel) => {          this.channelJoinLeft(async (channel) => {
162              await channel.send({              await channel.send({
163                  embeds: [                  embeds: [
164                      new MessageEmbed()                      new MessageEmbed()
# Line 156  class Logger { Line 168  class Logger {
168                          name: member.user.tag,                          name: member.user.tag,
169                          iconURL: member.user.displayAvatarURL(),                          iconURL: member.user.displayAvatarURL(),
170                      })                      })
171                      .addField('Joined at', `${member.joinedAt.toLocaleString()} (${util.timeSince(member.joinedAt.getTime())} ago)`)                      .addField('Joined at', `${member.joinedAt!.toLocaleString()} (${timeSince(member.joinedAt!.getTime())})`)
172                      .addField('User ID', member.user.id)                      .addField('User ID', member.user.id)
173                      .addField('Bot?', member.user.bot === true ? 'Yes' : 'No')                      .addField('Bot?', member.user.bot === true ? 'Yes' : 'No')
174                      .setFooter({                      .setFooter({
# Line 168  class Logger { Line 180  class Logger {
180          }, member);          }, member);
181      }      }
182    
183      logBeaned(member, r, d) {      logBeaned(member: GuildMember, r: string, d: User) {
184          this.channel(async (channel) => {          this.channel(async (channel) => {
185              await channel.send({              await channel.send({
186                  embeds: [                  embeds: [
# Line 191  class Logger { Line 203  class Logger {
203          }, member);          }, member);
204      }      }
205    
206      logMute(member, reason, timeMs, d) {      logMute(member: GuildMember, reason: string, timeMs: number | null | undefined, d: User) {
207          this.channel(async (channel) => {          this.channel(async (channel) => {
208              await channel.send({              await channel.send({
209                  embeds: [                  embeds: [
# Line 204  class Logger { Line 216  class Logger {
216                      })                      })
217                      .addField('Reason', reason)                      .addField('Reason', reason)
218                      .addField('Muted by', d.tag)                      .addField('Muted by', d.tag)
219                      .addField('Duration Until', typeof timeMs === 'number' ? new Date((timeMs / 1000) + Date.now()).toLocaleString() : "*No duration set*")                      .addField('Duration Until', typeof timeMs === 'number' ? `${new Date((timeMs / 1000) + Date.now()).toLocaleString()} (${timeProcess(timeMs / 1000)})` : "*No duration set*")
220                      .addField('User ID', member.user.id)                      .addField('User ID', member.user.id)
221                      .setFooter({                      .setFooter({
222                          text: "Muted",                          text: "Muted",
# Line 215  class Logger { Line 227  class Logger {
227          }, member);          }, member);
228      }      }
229    
230      logUnmute(member, d) {      logUnmute(member: GuildMember, d: User) {
231          this.channel(async (channel) => {          this.channel(async (channel) => {
232              await channel.send({              await channel.send({
233                  embeds: [                  embeds: [
# Line 237  class Logger { Line 249  class Logger {
249          }, member);          }, member);
250      }      }
251    
252      logWarn(msg, member, d, reason) {      logWarn(msg: Message, member: GuildMember | User, d: User, reason: string, id: number | string) {
253          if (member.user)          if ((member as GuildMember).user)
254              member = member.user;              member = (member as GuildMember).user;
255    
256          this.channel(async (channel) => {          this.channel(async (channel) => {            
257              await channel.send({              await channel.send({
258                  embeds: [                  embeds: [
259                      new MessageEmbed()                      new MessageEmbed()
260                      .setColor('GOLD')                      .setColor('GOLD')
261                      .setTitle("Member warned")                      .setTitle("Member warned")
262                      .setAuthor({                      .setAuthor({
263                          name: member.tag,                          name: (member as User).tag,
264                          iconURL: member.displayAvatarURL(),                          iconURL: member.displayAvatarURL(),
265                      })                      })
266                      .addField('Reason', reason)                      .addField('Reason', reason)
267                      .addField('Warned by', d.tag)                      .addField('Warned by', d.tag)
268                      .addField('User ID', member.id)                      .addField('User ID', member.id)
269                        .addField('Warning ID', id + '')
270                      .setFooter({                      .setFooter({
271                          text: "Warned",                          text: "Warned",
272                      })                      })
# Line 263  class Logger { Line 276  class Logger {
276          }, msg);          }, msg);
277      }      }
278    
279      logWarndel(msg, member, warn, d) {      logWarndel(msg: Message, member: GuildMember, warn: any, d: User) {
280          this.channel(async (channel) => {          this.channel(async (channel) => {
281              await channel.send({              await channel.send({
282                  embeds: [                  embeds: [
# Line 287  class Logger { Line 300  class Logger {
300      }      }
301  }  }
302    
 module.exports = Logger;  
303    export default Logger;

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26