parent
							
								
									8ba49a228b
								
							
						
					
					
						commit
						dc4fa00fd2
					
				| @ -1,17 +1,72 @@ | ||||
| const Discord = require("discord.js"); | ||||
| 
 | ||||
| const GuildData = require('../models/guild'); | ||||
| const LogData = require('../models/log'); | ||||
| 
 | ||||
| 
 | ||||
| const ObjLogTypes = { | ||||
|     mdelete: ['md', 'messagedelete', 'deletemessage', 'deletemsg', 'msgdelete'], | ||||
|     medit: ['me', 'messageedit', 'editmessage', 'msgedit', 'editmsg'], | ||||
|     chnew: ['chn', 'chc', 'newch', 'newchannel', 'chcreate', 'channelcreate'], | ||||
|     //chedit: ['channeledit'],
 | ||||
|     chdelete: ['chd', 'channeldelete', 'deletechannel', 'deletech', 'chdelete'], | ||||
|     //vcjoin: [],
 | ||||
|     //vcleave: [],
 | ||||
|     //servervcmute: [],
 | ||||
|     //servervcdeafen: [],
 | ||||
|     //kick: [],
 | ||||
|     //ban: [],
 | ||||
|     //mute: [],
 | ||||
|     //warn: [],
 | ||||
|     //giverole: [],
 | ||||
|     //takerole: [],
 | ||||
|     //addrole: [],
 | ||||
|     //editrole: [],
 | ||||
|     //deleterole: [],
 | ||||
|     //serverjoin: [],
 | ||||
|     //serverleave: [],
 | ||||
|     //nickname: [],
 | ||||
|     //username: [],
 | ||||
|     //avatar: []
 | ||||
| }; const LogTypes = new Map(); | ||||
| 
 | ||||
| let keys = Object.keys(ObjLogTypes); | ||||
| let key; for (key of keys) {let vs = ObjLogTypes[key]; let v; for (v of vs) {LogTypes.set(v, key);}} | ||||
| 
 | ||||
| 
 | ||||
| module.exports = { | ||||
|     name: "logs", | ||||
|     aliases: ["log", "l", "modlog", "modlogs"], | ||||
|     help: new Discord.MessageEmbed() | ||||
|     .setTitle("Help -> Server Logs") | ||||
|     .setDescription("Comfigure your server's log settings.\n\nLogs will update you on what ") | ||||
|     .addField("Syntax", "`vip <add|remove|check>`") | ||||
|     .addField("Notice", "This command is **developer-only**."), | ||||
|     .setDescription("Configure your server's log settings.\n\nLogs will update you on events in your server that have the potential to require moderator intervention, like someone deleting a hateful message before you can see it or a misbehaving moderator kicking/banning a member when they aren't supposed to.") | ||||
|     .addField("Syntax", "`log <set|list|view|clear> [logType] [#channel]`") | ||||
|     .addField("Notice", "You must be an admin or have the specified staff role in order to use this command."), | ||||
|     async execute(message, msg, args, cmd, prefix, mention, client) { | ||||
|         if (!message.guild) {return message.reply("This command is server-only!");} | ||||
|         if (!args.length) {return message.channel.send(`Syntax: \`${prefix}vip <add|remove|check>\``);} | ||||
|         const GuildSettings = require('../models/guild'); | ||||
|         
 | ||||
|         let tg = await GuildData.findOne({gid: message.guild.id}); | ||||
|         if ((!message.member.permissions.has("ADMINISTRATOR")) && (!tg || !tg.staffrole || !tg.staffrole.length || !message.member.roles.cache.has(tg.staffrole))) {return message.reply("You must be an administrator or have the specified staff role in this server in order to edit or view log settings.");} | ||||
|         if (!args.length) {return message.channel.send(`Syntax: \`${prefix}log <set|list|view|clear> [logType] [#channel]\``);} | ||||
| 
 | ||||
|         if (['s', 'set'].includes(args[0].toLowerCase())) { | ||||
|             if (args.length < 3) {return message.channel.send(`You must specify the log type and the channel to send the log to. Use \`${prefix}log list\` to see a list of valid log types.`);} | ||||
|             if (!LogTypes.has(args[1].toLowerCase())) {return message.channel.send("That's not a valid log type. Use \`${prefix}log list\` to see a list of valid log types.");} | ||||
|             let lt = LogTypes.get(args[1].toLowerCase()); | ||||
|             let ch = args[2].match(/<\#(?:\d+)>/m) && message.guild.channels.cache.has(message.mentions.channels.first().id) ? message.mentions.channels.first() : message.guild.channels.cache.has(args[2]) ? message.guild.channels.cache.get(args[2]) : null; | ||||
|             if (!ch) {return message.channel.send("I can't find that channel! Make sure that you've mentioned one, or that the ID you provided is correct, and that I can see it.");} | ||||
|             if (!ch.permissionsFor(client.user.id).has("SEND_MESSAGES")) {return message.reply("I don't have permissions to send messages in that channel. Please give me access and try again.");} | ||||
|             let tl = await LogData.findOne({gid: message.guild.id}) || new LogData({gid: message.guild.id}); | ||||
|             tl[lt] = ch.id; | ||||
|             tl.save(); | ||||
|             if (!client.guildconfig.logs.has(message.guild.id)) {client.guildconfig.logs.set(message.guild.id, new Map());} | ||||
|             client.guildconfig.logs.get(message.guild.id).set(lt, ch.id); | ||||
|             return message.channel.send("Log settings updated!"); | ||||
|         } | ||||
| 
 | ||||
|         if (['l', 'list'].includes(args[0].toLowerCase())) {} | ||||
| 
 | ||||
|         if (['v', 'view'].includes(args[0].toLowerCase())) {} | ||||
| 
 | ||||
|         if (['c', 'clear'].includes(args[0].toLowerCase())) {} | ||||
|     } | ||||
| }; | ||||
| @ -0,0 +1,27 @@ | ||||
| const Discord = require('discord.js'); | ||||
| 
 | ||||
| module.exports = async (client, message) => { | ||||
| 	if (message.channel.type != "text") {return;}; | ||||
| 	//if (!Object.keys(snipe.delete).includes(message.guild.id)) {snipe.delete[message.guild.id] = {};};
 | ||||
| 	//snipe.delete[message.guild.id][message.channel.id] = message;
 | ||||
| 
 | ||||
| 	let ts = client.guildconfig.logs.has(message.guild.id) && client.guildconfig.logs.get(message.guild.id).has('mdelete') ? client.guildconfig.logs.get(message.guild.id).get('mdelete') : null; | ||||
| 	if (ts) {if (message.guild.channels.cache.has(ts) && message.guild.channels.cache.get(ts).permissionsFor(client.user.id).has("SEND_MESSAGES")) { | ||||
| 		let mde = new Discord.MessageEmbed() | ||||
| 			.setTitle('Message Deleted') | ||||
| 			.setDescription(`Sent by <@${message.author.id}> | In <#${message.channel.id}>`) | ||||
| 			.setThumbnail(message.author.avatarURL({size: 1024})) | ||||
| 			.setColor('ecff8f').setFooter("Natsuki", client.user.avatarURL()).setTimestamp(); | ||||
| 		if (message.content && message.content.length) {mde.addField("Message", "`-> `" + message.content.toString());} | ||||
| 		if (message.attachments.size) { | ||||
| 			if (message.attachments.first().url.includes(".png") || message.attachments.first().url.includes(".jpg") || message.attachments.first().url.includes(".gif")) {/*console.log('e');*/ try {mde.setImage(message.attachments.first().url);} catch {}} | ||||
| 			let av = Array.from(message.attachments.values()); | ||||
| 			as = ''; for (let a of av) { | ||||
| 				as += `[Att. ${av.indexOf(a) + 1}](${a.url})`; | ||||
| 				if (av.indexOf(a) + 1 < av.length) {as += ' | ';} | ||||
| 			} | ||||
| 			if (as.length) {mde.addField('Attachments', as);} | ||||
| 		} | ||||
| 		message.guild.channels.cache.get(ts).send(mde); | ||||
| 	}} | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue