You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							42 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
	
	
							42 lines
						
					
					
						
							2.8 KiB
						
					
					
				const Discord = require('discord.js');
 | 
						|
const UserData = require('../../models/user');
 | 
						|
 | 
						|
module.exports = {
 | 
						|
    name: "admin",
 | 
						|
    help: new Discord.MessageEmbed()
 | 
						|
        .setTitle("Help -> Admin")
 | 
						|
        .setDescription("Make a user a Luno admin")
 | 
						|
        .addField("Syntax", "`admin <add|remove|check> <@user|userID>`")
 | 
						|
        .addField("Notice", "This command is only available to Luno developers."),
 | 
						|
    meta: {
 | 
						|
        category: 'Developer',
 | 
						|
        description: "Add or remove users as Luno admins",
 | 
						|
        syntax: '`admin <add|remove|check> <@user|userID>`',
 | 
						|
        extra: "You can check if a user is an admin without being a developer."
 | 
						|
    },
 | 
						|
    async execute(message, msg, args, cmd, prefix, mention, client) {
 | 
						|
        if (!message.guild) {return message.reply("This is a guild-only command.");}
 | 
						|
        if (!args.length) {return message.channel.send(`Syntax: \`${prefix}\``);}
 | 
						|
        let person = mention ? mention : args[1] ? client.users.cache.has(args[1]) ? client.users.cache.get(args[1]) : null : null;
 | 
						|
        let tu = await UserData.findOne({uid: person ? person.id : message.author.id}) ? await UserData.findOne({uid: person ? person.id : message.author.id}) : new UserData({uid: person ? person.id : message.author.id});
 | 
						|
        if (['c', 'check'].includes(args[0])) {return message.reply(`${person ? person : message.member.displayName} ${tu.admin ? 'is' : 'is not'} a Luno Admin.`);}
 | 
						|
        if (!['a', 'add', 'r', 'remove'].includes(args[0])) {return message.reply("You must specify whether to `add` or `remove` someone as an admin.");}
 | 
						|
        if (!person) {return message.reply("You must mention someone to add as an admin, or use their ID.");}
 | 
						|
        let atu = await UserData.findOne({uid: message.author.id});
 | 
						|
        if ((!atu || !atu.developer) && !client.developers.includes(message.author.id)) {return message.reply('You must be a developer in order to add set admin statuses.');}
 | 
						|
        if (['a', 'add'].includes(args[0])) {tu.support = true; tu.staff = true; tu.admin = true;}
 | 
						|
        else {tu.admin = false; tu.developer = false;}
 | 
						|
        tu.save();
 | 
						|
        const logemb = (act) => new Discord.MessageEmbed()
 | 
						|
            .setAuthor(`Admin ${act}`, message.author.avatarURL())
 | 
						|
            .setDescription("A user's Admin status was updated.")
 | 
						|
            .setThumbnail(person.avatarURL({size: 1024}))
 | 
						|
            .addField("Name", person.username, true)
 | 
						|
            .addField("Developer", message.author.username, true)
 | 
						|
            .setColor("e8da3a")
 | 
						|
            .setFooter("Luno")
 | 
						|
            .setTimestamp();
 | 
						|
        client.guilds.cache.get('762707532417335296').channels.cache.get('762732961753595915').send(logemb(['a', 'add'].includes(args[0]) ? 'Added' : 'Removed'));
 | 
						|
        return message.reply(`${message.guild.members.cache.get(person.id).displayName} is no${['a', 'add'].includes(args[0]) ? 'w' : ' longer'} an admin!`);
 | 
						|
    }
 | 
						|
}; |