mirror of https://github.com/kry008/Bot-2.0.git
				
				
				
			in out user
							parent
							
								
									81b2cbb8a2
								
							
						
					
					
						commit
						f0e96dac7e
					
				| 
						 | 
					@ -2,4 +2,5 @@ config.json
 | 
				
			||||||
templates.file
 | 
					templates.file
 | 
				
			||||||
node_modules
 | 
					node_modules
 | 
				
			||||||
package-lock.json
 | 
					package-lock.json
 | 
				
			||||||
guilds-*.txt
 | 
					guilds-*.txt
 | 
				
			||||||
 | 
					guilds/*.json
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,95 @@
 | 
				
			||||||
 | 
					const fs = require('fs');
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					    name: 'exitmsg',
 | 
				
			||||||
 | 
					    description: 'Enable or disable the exit message and edit the exit message. To mention the user, use {{USER}}.',
 | 
				
			||||||
 | 
					    help: 'Function to edit the message that is sent when a user leaves the server, use {{USER}} to mention the user.',
 | 
				
			||||||
 | 
					    options: [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'enabled',
 | 
				
			||||||
 | 
					            description: 'Enable or disable the exit message',
 | 
				
			||||||
 | 
					            type: 5,
 | 
				
			||||||
 | 
					            required: true,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'title',
 | 
				
			||||||
 | 
					            description: 'Title of the exit message',
 | 
				
			||||||
 | 
					            type: 3,
 | 
				
			||||||
 | 
					            required: false,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'description',
 | 
				
			||||||
 | 
					            description: 'Description of the exit message, use {{USER}} to mention the user',
 | 
				
			||||||
 | 
					            type: 3,
 | 
				
			||||||
 | 
					            required: false,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'channel',
 | 
				
			||||||
 | 
					            description: 'Channel to send the exit message',
 | 
				
			||||||
 | 
					            type: 7,
 | 
				
			||||||
 | 
					            required: false,
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    slash: true,
 | 
				
			||||||
 | 
					    text: true,
 | 
				
			||||||
 | 
					    admin: true,
 | 
				
			||||||
 | 
					    requireKick: false,
 | 
				
			||||||
 | 
					    requireBan: false,
 | 
				
			||||||
 | 
					    canBeUsedInDm: true,
 | 
				
			||||||
 | 
					    contexts: ['GUILD_TEXT'],
 | 
				
			||||||
 | 
					    integration_types: [0],
 | 
				
			||||||
 | 
					    execute(message, args) {
 | 
				
			||||||
 | 
					        message.channel.send('This command can only be used as a slash command.');
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    executeSlash(interaction) {
 | 
				
			||||||
 | 
					        //check if the user has the required permissions
 | 
				
			||||||
 | 
					        if (!interaction.member.permissions.has('ADMINISTRATOR')) {
 | 
				
			||||||
 | 
					            interaction.reply('You need to have the administrator permission to use this command.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //check if all the required arguments are provided
 | 
				
			||||||
 | 
					        if(!interaction.options.getBoolean('enabled') || !interaction.options.getString('title') || !interaction.options.getString('description') || !interaction.options.getChannel('channel')) {
 | 
				
			||||||
 | 
					            interaction.reply('Please provide all the required information.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        const enabled = interaction.options.getBoolean('enabled');
 | 
				
			||||||
 | 
					        const title = interaction.options.getString('title');
 | 
				
			||||||
 | 
					        const description = interaction.options.getString('description');
 | 
				
			||||||
 | 
					        const channel = interaction.options.getChannel('channel');
 | 
				
			||||||
 | 
					        const filePath = `./guilds/guilds-${interaction.guild.id}.json`;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if(enabled === null || title === null || description === null || channel === null) {
 | 
				
			||||||
 | 
					            interaction.reply('Please provide all the required information.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if(channel.type !== 0) {
 | 
				
			||||||
 | 
					            interaction.reply('Please provide a text channel.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if(enabled === false) {
 | 
				
			||||||
 | 
					            //get data from file
 | 
				
			||||||
 | 
					            const data = JSON.parse(fs.readFileSync(filePath));
 | 
				
			||||||
 | 
					            data.goodbyeMessage.title = null;
 | 
				
			||||||
 | 
					            data.goodbyeMessage.content = null;
 | 
				
			||||||
 | 
					            data.goodbyeChannel = null;
 | 
				
			||||||
 | 
					            data.goodbye = false;
 | 
				
			||||||
 | 
					            fs.writeFileSync(filePath, JSON.stringify(data));
 | 
				
			||||||
 | 
					            interaction.reply('Exit message disabled.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            const data = JSON.parse(fs.readFileSync(filePath));
 | 
				
			||||||
 | 
					            data.goodbyeMessage.title = title;
 | 
				
			||||||
 | 
					            data.goodbyeMessage.content = description;
 | 
				
			||||||
 | 
					            data.goodbyeChannel = channel.id;
 | 
				
			||||||
 | 
					            data.goodbye = true;
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            fs.writeFileSync(filePath, JSON.stringify(data));
 | 
				
			||||||
 | 
					            interaction.reply('Exit message updated successfully.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,101 @@
 | 
				
			||||||
 | 
					const fs = require('fs');
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					    name: 'newusermsg',
 | 
				
			||||||
 | 
					    description: 'Edit the message that is sent when a new user joins the server, use {{USER}} to mention the user.',
 | 
				
			||||||
 | 
					    help: 'Function to edit the message that is sent when a new user joins the server, use {{USER}} to mention the user.',
 | 
				
			||||||
 | 
					    //enabled/disabled, title, description, channel
 | 
				
			||||||
 | 
					    options: [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'enabled',
 | 
				
			||||||
 | 
					            description: 'Enable or disable the welcome message',
 | 
				
			||||||
 | 
					            type: 5,
 | 
				
			||||||
 | 
					            required: true,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'title',
 | 
				
			||||||
 | 
					            description: 'Title of the welcome message',
 | 
				
			||||||
 | 
					            type: 3,
 | 
				
			||||||
 | 
					            required: false,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'description',
 | 
				
			||||||
 | 
					            description: 'Description of the welcome message, use {{USER}} to mention the user',
 | 
				
			||||||
 | 
					            type: 3,
 | 
				
			||||||
 | 
					            required: false,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'channel',
 | 
				
			||||||
 | 
					            description: 'Channel to send the welcome message',
 | 
				
			||||||
 | 
					            type: 7,
 | 
				
			||||||
 | 
					            required: false,
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    slash: true,
 | 
				
			||||||
 | 
					    text: true,
 | 
				
			||||||
 | 
					    admin: true,
 | 
				
			||||||
 | 
					    requireKick: true,
 | 
				
			||||||
 | 
					    requireBan: true,
 | 
				
			||||||
 | 
					    canBeUsedInDm: false,
 | 
				
			||||||
 | 
					    contexts: ['GUILD_TEXT'],
 | 
				
			||||||
 | 
					    integration_types: [0, 1],
 | 
				
			||||||
 | 
					    execute(message, args) {
 | 
				
			||||||
 | 
					        message.channel.send('This command can only be used as a slash command.');
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    executeSlash(interaction) {
 | 
				
			||||||
 | 
					        //check if the user has the required permissions
 | 
				
			||||||
 | 
					        if (!interaction.member.permissions.has('ADMINISTRATOR')) {
 | 
				
			||||||
 | 
					            interaction.reply('You need to have the administrator permission to use this command.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //check if all the required arguments are provided
 | 
				
			||||||
 | 
					        if(!interaction.options.getBoolean('enabled') || !interaction.options.getString('title') || !interaction.options.getString('description') || !interaction.options.getChannel('channel')) {
 | 
				
			||||||
 | 
					            interaction.reply('Please provide all the required information.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        const enabled = interaction.options.getBoolean('enabled');
 | 
				
			||||||
 | 
					        const title = interaction.options.getString('title');
 | 
				
			||||||
 | 
					        const description = interaction.options.getString('description');
 | 
				
			||||||
 | 
					        const channel = interaction.options.getChannel('channel');
 | 
				
			||||||
 | 
					        const filePath = `./guilds/guilds-${interaction.guild.id}.json`;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if(enabled === null || title === null || description === null || channel === null) {
 | 
				
			||||||
 | 
					            interaction.reply('Please provide all the required information.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //check if the channel is a text channel
 | 
				
			||||||
 | 
					        if(channel.type !== 0) {
 | 
				
			||||||
 | 
					            interaction.reply('Please provide a text channel.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if(enabled === false) {
 | 
				
			||||||
 | 
					            //get data from file
 | 
				
			||||||
 | 
					            if (fs.existsSync(filePath)) {
 | 
				
			||||||
 | 
					                const data = JSON.parse(fs.readFileSync(filePath));
 | 
				
			||||||
 | 
					                data.hello = false;
 | 
				
			||||||
 | 
					                data.helloChannel = null;
 | 
				
			||||||
 | 
					                data.welcomeMessage.title = null;
 | 
				
			||||||
 | 
					                data.welcomeMessage.content = null;
 | 
				
			||||||
 | 
					                fs.writeFileSync(filePath, JSON.stringify(data));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            interaction.reply('Welcome message disabled.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            //get data from file
 | 
				
			||||||
 | 
					            if (fs.existsSync(filePath)) {
 | 
				
			||||||
 | 
					                const data = JSON.parse(fs.readFileSync(filePath));
 | 
				
			||||||
 | 
					                data.hello = true;
 | 
				
			||||||
 | 
					                data.helloChannel = channel.id;
 | 
				
			||||||
 | 
					                data.welcomeMessage.title = title;
 | 
				
			||||||
 | 
					                data.welcomeMessage.content = description;
 | 
				
			||||||
 | 
					                fs.writeFileSync(filePath, JSON.stringify(data));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            interaction.reply('Welcome message enabled.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,76 @@
 | 
				
			||||||
 | 
					const fs = require('fs');
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					    name: 'rulesmsg',
 | 
				
			||||||
 | 
					    description: 'Enable or disable the rules message and edit the rules message.',
 | 
				
			||||||
 | 
					    help: 'Use {{RULES}} to mention the rules channel',
 | 
				
			||||||
 | 
					    options: [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'enabled',
 | 
				
			||||||
 | 
					            description: 'Enable or disable the rules message',
 | 
				
			||||||
 | 
					            type: 5,
 | 
				
			||||||
 | 
					            required: true,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'ruleline',
 | 
				
			||||||
 | 
					            description: 'Description of the rules message, use {{RULES}} to mention the rules channel',
 | 
				
			||||||
 | 
					            type: 3,
 | 
				
			||||||
 | 
					            required: false,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            name: 'channel',
 | 
				
			||||||
 | 
					            description: 'Channel to send the rules message',
 | 
				
			||||||
 | 
					            type: 7,
 | 
				
			||||||
 | 
					            required: false,
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ],
 | 
				
			||||||
 | 
					    slash: true,
 | 
				
			||||||
 | 
					    text: true,
 | 
				
			||||||
 | 
					    admin: true,
 | 
				
			||||||
 | 
					    requireKick: false,
 | 
				
			||||||
 | 
					    requireBan: false,
 | 
				
			||||||
 | 
					    canBeUsedInDm: false,
 | 
				
			||||||
 | 
					    contexts: ['GUILD_TEXT'],
 | 
				
			||||||
 | 
					    integration_types: [0],
 | 
				
			||||||
 | 
					    execute(message, args) {
 | 
				
			||||||
 | 
					        message.channel.send('This command can only be used as a slash command.');
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    executeSlash(interaction) {
 | 
				
			||||||
 | 
					        //check if the user has the required permissions
 | 
				
			||||||
 | 
					        if (!interaction.member.permissions.has('ADMINISTRATOR')) {
 | 
				
			||||||
 | 
					            interaction.reply('You need to have the administrator permission to use this command.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //check if all the required arguments are provided
 | 
				
			||||||
 | 
					        if(!interaction.options.getBoolean('enabled') || !interaction.options.getString('ruleline') || !interaction.options.getChannel('channel')) {
 | 
				
			||||||
 | 
					            interaction.reply('Please provide all the required information.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        const enabled = interaction.options.getBoolean('enabled');
 | 
				
			||||||
 | 
					        const ruleline = interaction.options.getString('ruleline');
 | 
				
			||||||
 | 
					        const channel = interaction.options.getChannel('channel');
 | 
				
			||||||
 | 
					        const filePath = `./guilds/guilds-${interaction.guild.id}.json`;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if(enabled === null || ruleline === null || channel === null) {
 | 
				
			||||||
 | 
					            interaction.reply('Please provide all the required information.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if(channel.type !== 0) {
 | 
				
			||||||
 | 
					            interaction.reply('Please provide a text channel.');
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (enabled) {
 | 
				
			||||||
 | 
					            const data = JSON.parse(fs.readFileSync(filePath));
 | 
				
			||||||
 | 
					            data.rulesMessage = ruleline;
 | 
				
			||||||
 | 
					            data.rulesChannel = channel.id;
 | 
				
			||||||
 | 
					            fs.writeFileSync(filePath, JSON.stringify(data, null, 4));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            const data = JSON.parse(fs.readFileSync(filePath));
 | 
				
			||||||
 | 
					            data.rulesMessage = null;
 | 
				
			||||||
 | 
					            data.rulesChannel = null;
 | 
				
			||||||
 | 
					            fs.writeFileSync(filePath, JSON.stringify(data, null, 4));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        interaction.reply('Rules message updated successfully.');
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -9,5 +9,18 @@ module.exports = {
 | 
				
			||||||
        const guildPath = `./guilds-${new Date().toISOString().split('T')[0]}.txt`;
 | 
					        const guildPath = `./guilds-${new Date().toISOString().split('T')[0]}.txt`;
 | 
				
			||||||
        //save name - id - time of joining
 | 
					        //save name - id - time of joining
 | 
				
			||||||
        fs.appendFileSync(guildPath, `JOIN: \`${guild.name}\` - ${guild.id} - ${new Date().toLocaleString()}\n`);
 | 
					        fs.appendFileSync(guildPath, `JOIN: \`${guild.name}\` - ${guild.id} - ${new Date().toLocaleString()}\n`);
 | 
				
			||||||
 | 
					        const guildPath2 = `./guilds/guilds-${guild.id}.json`;
 | 
				
			||||||
 | 
								if (!fs.existsSync(guildPath2)) {
 | 
				
			||||||
 | 
					                fs.writeFileSync(guildPath2, JSON.stringify({ id: guild.id, name: [guild.name], premium: false, prefix: prefix, premium:false, prefix:"^", hello: false, goodbye: true, helloChannel: null, goodbyeChannel: null, rulesChannel: null, welcomeMessage: { title: "Say hello", content: "Hello {{USER}}"}, goodbyeMessage: { title: "Say goodbye", content: "Goodbye {{USER}}"}, rulesMessage: null}));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                const data = JSON.parse(fs.readFileSync(guildPath2));
 | 
				
			||||||
 | 
					                if (!data.name.includes(guild.name))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    data.name.push(guild.name);
 | 
				
			||||||
 | 
					                    fs.writeFileSync(guildPath2, JSON.stringify(data));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -1,28 +1,57 @@
 | 
				
			||||||
const { Events, EmbedBuilder } = require('discord.js');
 | 
					const { Events, EmbedBuilder } = require('discord.js');
 | 
				
			||||||
 | 
					const fs = require('fs');
 | 
				
			||||||
function randomColor() {
 | 
					function randomColor() {
 | 
				
			||||||
    const r = Math.floor(Math.random() * 200) + 50;
 | 
					    const r = Math.floor(Math.random() * 200) + 50;
 | 
				
			||||||
    const g = Math.floor(Math.random() * 200) + 50;
 | 
					    const g = Math.floor(Math.random() * 200) + 50;
 | 
				
			||||||
    const b = Math.floor(Math.random() * 200) + 50;
 | 
					    const b = Math.floor(Math.random() * 200) + 50;
 | 
				
			||||||
    return `#${r.toString(16)}${g.toString(16)}${b.toString(16)}`;
 | 
					    return `#${r.toString(16)}${g.toString(16)}${b.toString(16)}`;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
module.exports = {
 | 
					 | 
				
			||||||
	name: Events.GuildMemberAdd,
 | 
					 | 
				
			||||||
    once: false,
 | 
					 | 
				
			||||||
    execute(args) {
 | 
					 | 
				
			||||||
        const { guild, user } = args;
 | 
					 | 
				
			||||||
        const channel = guild.channels.cache.find(channel => ['new-member', 'new-users', 'hello', 'welcome'].includes(channel.name));
 | 
					 | 
				
			||||||
        //find rules channel
 | 
					 | 
				
			||||||
        const rulesChannel = guild.channels.cache.find(channel => ['rules', 'regulations', 'regulamin'].includes(channel.name));
 | 
					 | 
				
			||||||
        if (!channel) return;
 | 
					 | 
				
			||||||
        if(!rulesChannel) var text = 'Please read the rules in rules channel.';
 | 
					 | 
				
			||||||
        else var text = `Please read the rules in ${rulesChannel} channel.`;
 | 
					 | 
				
			||||||
        const embed = new EmbedBuilder()
 | 
					 | 
				
			||||||
            .setTitle(`Welcome ${user.username}!`)
 | 
					 | 
				
			||||||
            .setDescription(`Welcome to ${guild.name}! \n${text}`)
 | 
					 | 
				
			||||||
            .setColor(randomColor())
 | 
					 | 
				
			||||||
            .setThumbnail(user.avatarURL())
 | 
					 | 
				
			||||||
            .setTimestamp();
 | 
					 | 
				
			||||||
        channel.send({ embeds: [embed] });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					    name: Events.GuildMemberAdd,
 | 
				
			||||||
 | 
					    once: false,
 | 
				
			||||||
 | 
					    execute(member) {
 | 
				
			||||||
 | 
					        const { guild, user } = member;
 | 
				
			||||||
 | 
					        const filePath = `./guilds/guilds-${guild.id}.json`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (fs.existsSync(filePath)) {
 | 
				
			||||||
 | 
					            const data = JSON.parse(fs.readFileSync(filePath));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!data.hello || !data.helloChannel) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            let title = data.welcomeMessage && data.welcomeMessage.title ? data.welcomeMessage.title : "👋 Welcome!";
 | 
				
			||||||
 | 
					            let description = data.welcomeMessage && data.welcomeMessage.content ? data.welcomeMessage.content.replace("{{USER}}", user.username) : `Welcome to the server, ${user.username}!`;
 | 
				
			||||||
 | 
					            if(data.rulesChannel == null || data.rulesMessage == null)
 | 
				
			||||||
 | 
					            {   
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //data.rulesMessage + #data.rulesChannel
 | 
				
			||||||
 | 
					                description += "\n" + data.rulesMessage;
 | 
				
			||||||
 | 
					                //replace {{RULES}} with the rules channel
 | 
				
			||||||
 | 
					                description = description.replace("{{RULES}}", `<#${data.rulesChannel}>`);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            const embed = new EmbedBuilder()
 | 
				
			||||||
 | 
					                .setTitle(title)
 | 
				
			||||||
 | 
					                .setDescription(description)
 | 
				
			||||||
 | 
					                .setColor(randomColor())
 | 
				
			||||||
 | 
					                .setThumbnail(user.avatarURL())
 | 
				
			||||||
 | 
					                .setTimestamp();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            guild.channels.fetch(data.helloChannel)
 | 
				
			||||||
 | 
					                .then(channel => {
 | 
				
			||||||
 | 
					                    if (channel) {
 | 
				
			||||||
 | 
					                        channel.send({ embeds: [embed] })
 | 
				
			||||||
 | 
					                            .catch(console.error);
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        console.error("Welcome channel not found.");
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                .catch(console.error);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,66 @@
 | 
				
			||||||
const { Events } = require('discord.js');
 | 
					const { Events } = require('discord.js');
 | 
				
			||||||
const { ActivityType } = require('discord.js');
 | 
					const { ActivityType } = require('discord.js');
 | 
				
			||||||
 | 
					const { prefix } = require('../config.json');
 | 
				
			||||||
 | 
					const fs = require('fs');
 | 
				
			||||||
module.exports = {
 | 
					module.exports = {
 | 
				
			||||||
	name: Events.ClientReady,
 | 
						name: Events.ClientReady,
 | 
				
			||||||
	once: true,
 | 
						once: true,
 | 
				
			||||||
	execute(client) {
 | 
						execute(client) {
 | 
				
			||||||
		console.log(`Ready! Logged in as ${client.user.tag}`);
 | 
							console.log(`Ready! Logged in as ${client.user.tag}`);
 | 
				
			||||||
		client.user.setActivity('kry008.xyz/bot/i | To see how to support type /supportbot', { type: ActivityType.PLAYING });
 | 
							client.user.setActivity('kry008.xyz/bot/i | To see how to support type /supportbot | Type /help to get all commands', { type: ActivityType.PLAYING });
 | 
				
			||||||
 | 
							//read all guilds, create files with guildid.json if not exists
 | 
				
			||||||
 | 
							client.guilds.cache.forEach(guild => {
 | 
				
			||||||
 | 
								const guildPath = `./guilds/guilds-${guild.id}.json`;
 | 
				
			||||||
 | 
								if (!fs.existsSync(guildPath)) {
 | 
				
			||||||
 | 
									fs.writeFileSync(guildPath, JSON.stringify(({ id: guild.id, name: [guild.name], premium: false, prefix: prefix, premium:false, prefix:"^", modChannel: null, hello: false, goodbye: true, helloChannel: null, goodbyeChannel: null, rulesChannel: null, welcomeMessage: { title: "Say hello", content: "Hello {{USER}}"}, goodbyeMessage: { title: "Say goodbye", content: "Goodbye {{USER}}"}, rulesMessage: null})));
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									const data = JSON.parse(fs.readFileSync(guildPath));
 | 
				
			||||||
 | 
									if (!data.name.includes(guild.name))
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										data.name.push(guild.name);
 | 
				
			||||||
 | 
										fs.writeFileSync(guildPath, JSON.stringify(data));
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if(!data.hello)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										data.hello = false;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if(!data.goodbye)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										data.goodbye = false;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if(!data.helloChannel)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										data.helloChannel = null;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if(!data.goodbyeChannel)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										data.goodbyeChannel = null;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if(!data.rulesChannel)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										data.rulesChannel = null;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if(!data.welcomeMessage)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										data.welcomeMessage = null;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if(!data.goodbyeMessage)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										data.goodbyeMessage = null;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if(!data.rulesMessage)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										data.rulesMessage = null;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									if(!data.modChannel)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										data.modChannel = null;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									fs.writeFileSync(guildPath, JSON.stringify(data));
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,19 +1,42 @@
 | 
				
			||||||
//guildMemberRemove
 | 
					 | 
				
			||||||
const { Events, EmbedBuilder } = require('discord.js');
 | 
					const { Events, EmbedBuilder } = require('discord.js');
 | 
				
			||||||
 | 
					const fs = require('fs');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = {
 | 
					module.exports = {
 | 
				
			||||||
	name: Events.GuildMemberRemove,
 | 
					    name: Events.GuildMemberRemove,
 | 
				
			||||||
    once: false,
 | 
					    once: false,
 | 
				
			||||||
    execute(args) {
 | 
					    execute(member) {
 | 
				
			||||||
        const { guild, user } = args;
 | 
					        const { guild, user } = member;
 | 
				
			||||||
        const channel = guild.channels.cache.find(channel => ['goodbye', 'bye', 'left', 'leaving', 'wyjścia'].includes(channel.name));
 | 
					        const filePath = `./guilds/guilds-${guild.id}.json`;
 | 
				
			||||||
        if (!channel) return;
 | 
					
 | 
				
			||||||
        const embed = new EmbedBuilder()
 | 
					        if (fs.existsSync(filePath)) {
 | 
				
			||||||
            .setTitle(`Goodbye ${user.username}!`)
 | 
					            const data = JSON.parse(fs.readFileSync(filePath));
 | 
				
			||||||
            .setDescription(`Goodbye ${user.username}!`)
 | 
					
 | 
				
			||||||
            .setColor('#ff0000')
 | 
					            if (!data.goodbye || !data.goodbyeChannel) return;
 | 
				
			||||||
            .setThumbnail(user.avatarURL())
 | 
					
 | 
				
			||||||
            .setTimestamp();
 | 
					            let title = data.goodbyeMessage.title;
 | 
				
			||||||
        channel.send({ embeds: [embed] });
 | 
					            let description = data.goodbyeMessage.content ? data.goodbyeMessage.content.replace("{{USER}}", user.username) : `Goodbye ${user.username}!`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            const embed = new EmbedBuilder()
 | 
				
			||||||
 | 
					                .setTitle(title)
 | 
				
			||||||
 | 
					                .setDescription(description)
 | 
				
			||||||
 | 
					                .setColor("#ff0000")
 | 
				
			||||||
 | 
					                .setThumbnail(user.avatarURL())
 | 
				
			||||||
 | 
					                .setTimestamp();
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            guild.channels.fetch(data.goodbyeChannel)
 | 
				
			||||||
 | 
					                .then(channel => {
 | 
				
			||||||
 | 
					                    if (channel) {
 | 
				
			||||||
 | 
					                        channel.send({ embeds: [embed] })
 | 
				
			||||||
 | 
					                            .catch(console.error);
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        console.error("Goodbye channel not found.");
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                .catch(console.error);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
		Loading…
	
		Reference in New Issue