/[sudobot]/trunk/src/services/Welcomer.ts
ViewVC logotype

Diff of /trunk/src/services/Welcomer.ts

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

revision 226 by rakin, Mon Jul 29 17:29:06 2024 UTC revision 393 by rakin, Mon Jul 29 17:29:59 2024 UTC
# Line 1  Line 1 
1    /**
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 { GuildMember, MessageEmbed, TextChannel } from "discord.js";  import { GuildMember, MessageEmbed, TextChannel } from "discord.js";
 import DiscordClient from "../client/Client";  
21  import fs from 'fs';  import fs from 'fs';
22  import path from "path";  import path from "path";
23  import Service from "../utils/structures/Service";  import Service from "../utils/structures/Service";
24    
25  export default class Welcomer extends Service {  export default class Welcomer extends Service {
26      messages: string[] = JSON.parse(fs.readFileSync(path.resolve(__dirname, '..', '..', 'resources', 'welcome_messages.json')).toString());      messages: string[] = JSON.parse(fs.readFileSync(path.resolve(process.env.SUDO_PREFIX ?? path.join(__dirname, '..', '..'), 'resources', 'welcome_messages.json')).toString());
27    
28        generateEmbed(member: GuildMember, index?: number) {
29            const { message, randomize } = this.client.config.props[member.guild.id].welcomer;
30            let content: string = message ?? '';
31    
32            if (randomize) {
33                content = this.generateMessage(index) + (message ? "\n" + content : '');
34            }
35    
36            if (content.trim() === '') {
37                return false;
38            }
39    
40            content = content
41                .replace(/:name:/g, member.displayName)
42                .replace(/:tag:/g, member.user.tag)
43                .replace(/:username:/g, member.user.username)
44                .replace(/:discrim:/g, member.user.discriminator)
45                .replace(/:avatar:/g, member.displayAvatarURL())
46                .replace(/:date:/g, `<t:${member.joinedAt?.getTime()}>`)
47                .replace(/:guild:/g, member.guild.name)
48                .replace(/:mention:/g, member.toString());
49    
50            return {
51                content: member.toString(),
52                embeds: [
53                    new MessageEmbed({
54                        author: {
55                            iconURL: member.displayAvatarURL(),
56                            name: member.user.tag
57                        },
58                        description: content,
59                        footer: {
60                            text: 'Welcome'
61                        }
62                    })
63                    .setColor('#007bff')
64                    .setTimestamp()
65                ]
66            };
67        }
68            
69      async start(member: GuildMember, index?: number) {      async start(member: GuildMember, index?: number) {
70          if (this.client.config.props[member.guild.id].welcomer.enabled) {          if (this.client.config.props[member.guild.id].welcomer.enabled) {
71              const { message, channel: channelID } = this.client.config.props[member.guild.id].welcomer;              const { channel: channelID } = this.client.config.props[member.guild.id].welcomer;
72              const content = (message ?? this.generateMessage(index))              
                                     .replace(':name:', member.displayName)  
                                     .replace(':tag:', member.user.tag)  
                                     .replace(':username:', member.user.username)  
                                     .replace(':discrim:', member.user.discriminator)  
                                     .replace(':avatar:', member.displayAvatarURL())  
                                     .replace(':date:', `<t:${member.joinedAt?.getTime()}>`)  
                                     .replace(':guild:', member.guild.name)  
                                     .replace(':mention:', member.toString());  
   
73              try {              try {
74                  const channel = (await member.guild.channels.fetch(channelID)) as TextChannel;                  const channel = (await member.guild.channels.fetch(channelID)) as TextChannel;
75                    const options = this.generateEmbed(member, index);
76    
77                    if (!options) {
78                        return;
79                    }
80    
81                  if (channel) {                  if (channel) {
82                      await channel.send({                      await channel.send(options);
                         content: member.toString(),  
                         embeds: [  
                             new MessageEmbed({  
                                 author: {  
                                     iconURL: member.displayAvatarURL(),  
                                     name: member.user.tag  
                                 },  
                                 description: content,  
                                 timestamp: new Date()  
                             })  
                             .setColor('#007bff')  
                         ]  
                     });  
83                  }                  }
84              }              }
85              catch (e) {              catch (e) {

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26