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