diff --git a/src/cmd/events.js b/src/cmd/events.js index bccafd1..3fcb57c 100644 --- a/src/cmd/events.js +++ b/src/cmd/events.js @@ -6,7 +6,28 @@ const configM = require('../configManager'); // Redo the first events because they're probably fucked up -exports.loadModule = function loadModule () { +// Add reason in the events + +function buildDiffs(after, before) { + let str = ''; + let doneKeys = []; + Object.keys(after).forEach(key => { + let one = typeof (before[key]) === 'object' ? JSON.stringify(before[key]) : before[key]; + let two = typeof (after[key]) === 'object' ? JSON.stringify(after[key]) : after[key]; + str += key + ' | ' + one + ' -> ' + two + '\n'; + doneKeys.push(key); + }); + Object.keys(before).forEach(key => { + if (!doneKeys.includes(key)) { + let one = typeof (before[key]) === 'object' ? JSON.stringify(before[key]) : before[key]; + let two = typeof (after[key]) === 'object' ? JSON.stringify(after[key]) : after[key]; + str += key + ' | ' + one + ' -> ' + two + '\n'; + } + }); + return str; +} + +exports.loadModule = function loadModule() { bot.on('channelCreate', async channel => { if (channel.type !== 0 && channel.type !== 2) return; // Add support for categories @@ -19,30 +40,39 @@ exports.loadModule = function loadModule () { let entry = auditlog.entries[0]; let hb = ""; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'Gateway Event Info :\n'; - hastebinMessage += 'New Channel ' + channel.name + ' data as JSON\n\n'; + let hastebinMessage = 'channelCreate event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; hastebinMessage += JSON.stringify(channel) + '\n\n'; hastebinMessage += '---\n\n'; - hastebinMessage += 'Audit Log Time !\n\n'; - hastebinMessage += 'User :\n'; - hastebinMessage += JSON.stringify(entry.user) + '\n\n'; - hastebinMessage += entry.user.username + '#' + entry.user.discriminator + ' with id ' + entry.user.id; + hastebinMessage += 'Responsible User\'s Name : ' + entry.user.username + '#' + entry.user.discriminator + '\n'; + hastebinMessage += 'Responsible User\'s Id : ' + entry.user.id + '\n\n'; + hastebinMessage += 'Channel Name : ' + channel.name + '\n'; + hastebinMessage += 'Channel Id : ' + channel.id + '\n'; + hastebinMessage += 'Channel Type : ' + (channel.type === 0 ? 'Text' : 'Voice') + '\n'; + if (channel.type === 0) { + hastebinMessage += 'Channel Topic : ' + channel.topic + '\n'; + hastebinMessage += (channel.nsfw === true ? 'Channel is nsfw' : 'Channel is not nsfw') + '\n\n'; + } + hastebinMessage += 'Reason : ' + entry.reason + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += 'Hyper cool before -> after event thing :\n'; + hastebinMessage += buildDiffs(entry.after, entry.before) + '\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); hb = await hastebin(configM.config.hastebinServer, hastebinMessage); } let type = ""; - if (channel.type === 0) { + if (channel.type === 0) { type = "text"; } else { type = "voice"; } - let mention = channel.mention; - if (channel.type === 2) mention.shift(); - let finalMessage = a.event.msg.replace('$type', type).replace('$mention', mention).replace('$id', channel.id).replace('$timestamp', channel.createdAt).replace('$hastebin', hb).replace('$name', channel.name).replace('$user', entry.user.username + '#' + entry.user.discriminator).replace('$userId', entry.user.id); + let finalMessage = a.event.msg.replace('$type', type).replace('$channelId', channel.id).replace('$channel', channel.name).replace('$hastebin', hb).replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$reason', entry.reason); bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); } } - catch(e) { + catch (e) { console.log(e); } }); @@ -58,30 +88,39 @@ exports.loadModule = function loadModule () { let entry = auditlog.entries[0]; let hb = ""; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'Gateway Event Info :\n'; - hastebinMessage += 'Channel Removed ' + channel.name + ' data as JSON\n\n'; + let hastebinMessage = 'channelDelete event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; hastebinMessage += JSON.stringify(channel) + '\n\n'; hastebinMessage += '---\n\n'; - hastebinMessage += 'Audit Log Time !\n\n'; - hastebinMessage += 'User :\n'; - hastebinMessage += JSON.stringify(entry.user) + '\n\n'; - hastebinMessage += entry.user.username + '#' + entry.user.discriminator + ' with id ' + entry.user.id; + hastebinMessage += 'Responsible User\'s Name : ' + entry.user.username + '#' + entry.user.discriminator + '\n'; + hastebinMessage += 'Responsible User\'s Id : ' + entry.user.id + '\n\n'; + hastebinMessage += 'Channel Name : ' + channel.name + '\n'; + hastebinMessage += 'Channel Id : ' + channel.id + '\n'; + hastebinMessage += 'Channel Type : ' + (channel.type === 0 ? 'Text' : 'Voice') + '\n'; + if (channel.type === 0) { + hastebinMessage += 'Channel Topic : ' + channel.topic + '\n'; + hastebinMessage += (channel.nsfw === true ? 'Channel was nsfw' : 'Channel was not nsfw') + '\n\n'; + } + hastebinMessage += 'Reason : ' + entry.reason + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += 'Hyper cool before -> after event thing :\n'; + hastebinMessage += buildDiffs(entry.after, entry.before) + '\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); hb = await hastebin(configM.config.hastebinServer, hastebinMessage); } let type = ""; - if (channel.type === 0) { + if (channel.type === 0) { type = "text"; } else { type = "voice"; } - let mention = channel.mention; - if (channel.type === 2) mention.shift(); - let finalMessage = a.event.msg.replace('$type', type).replace('$id', channel.id).replace('$timestamp', channel.createdAt).replace('$hastebin', hb).replace('$name', channel.name).replace('$user', entry.user.username + '#' + entry.user.discriminator).replace('$userId', entry.user.id); + let finalMessage = a.event.msg.replace('$type', type).replace('$channelId', channel.id).replace('$channel', channel.name).replace('$hastebin', hb).replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$reason', entry.reason); bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); } } - catch(e) { + catch (e) { console.log(e); } }); @@ -119,49 +158,53 @@ exports.loadModule = function loadModule () { // Add support for categories // Also, add independent support for each type of channels // Also, parse json with circular object support + // Voice channel support (bitrate) try { let a = await dbEI.getEvent(channel.guild.id, 'channelUpdate'); if (a.event.d === true) { let auditlog = await bot.getGuildAuditLogs(channel.guild.id, 1); let entry = auditlog.entries[0]; - console.log(entry.before); - console.log(entry.after); - console.log(entry); let hb = ""; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'Gateway Event Info :\n'; - hastebinMessage += 'New Channel ' + channel.name + ' data as JSON\n\n'; - hastebinMessage += JSON.stringify(channel) + '\n\n'; - hastebinMessage += 'Old Channel ' + oldChannel.name + ' data as JSON\n\n'; + let hastebinMessage = 'channelUpdate event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; hastebinMessage += JSON.stringify(oldChannel) + '\n\n'; + hastebinMessage += JSON.stringify(channel) + '\n\n'; hastebinMessage += '---\n\n'; - hastebinMessage += 'Audit Log Time !\n\n'; - hastebinMessage += 'What changed :\n'; - hastebinMessage += 'Before :\n'; - hastebinMessage += JSON.stringify(entry.before) + '\n'; - hastebinMessage += 'After :\n'; - hastebinMessage += JSON.stringify(entry.after) + '\n'; - hastebinMessage += 'User :\n'; - hastebinMessage += JSON.stringify(entry.user) + '\n\n'; - hastebinMessage += entry.user.username + '#' + entry.user.discriminator + ' with id ' + entry.user.id; + hastebinMessage += 'Responsible User\'s Name : ' + entry.user.username + '#' + entry.user.discriminator + '\n'; + hastebinMessage += 'Responsible User\'s Id : ' + entry.user.id + '\n\n'; + hastebinMessage += 'Channel Id : ' + channel.id + '\n'; + hastebinMessage += 'Channel Type : ' + (channel.type === 0 ? 'Text' : 'Voice') + '\n\n'; + hastebinMessage += 'Old Channel Name : ' + oldChannel.name + '\n'; + if (channel.type === 0) { + hastebinMessage += 'Old Channel Topic : ' + oldChannel.topic + '\n'; + hastebinMessage += (oldChannel.nsfw === true ? 'Old Channel was nsfw' : 'Old Channel was not nsfw') + '\n\n'; + } + hastebinMessage += 'Updated Channel Name : ' + channel.name + '\n'; + if (channel.type === 0) { + hastebinMessage += 'Updated Channel Topic : ' + channel.topic + '\n'; + hastebinMessage += (channel.nsfw === true ? 'Updated Channel is nsfw' : 'Updated Channel is not nsfw') + '\n\n'; + } + hastebinMessage += 'Reason : ' + entry.reason + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += 'Hyper cool before -> after event thing :\n'; + hastebinMessage += buildDiffs(entry.after, entry.before) + '\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); hb = await hastebin(configM.config.hastebinServer, hastebinMessage); } let type = ""; - if (channel.type === 0) { + if (channel.type === 0) { type = "text"; } else { type = "voice"; } - let mention = channel.mention; - if (channel.type === 2) mention.shift(); - let mentionOld = oldChannel.mention; - if (channel.type === 2) mentionOld.shift(); - let finalMessage = a.event.msg.replace('$type', type).replace('$mention', mention).replace('$id', channel.id).replace('$timestamp', channel.createdAt).replace('$hastebin', hb).replace('$name', channel.name).replace('$oldMention', mentionOld).replace('$oldTimestamp', oldChannel.createdAt).replace('$oldName', oldChannel.name).replace('$user', entry.user.username + '#' + entry.user.discriminator).replace('$userId', entry.user.id); + let finalMessage = a.event.msg.replace('$type', type).replace('$oldChannel', oldChannel.name).replace('$channelId', channel.id).replace('$channel', channel.name).replace('$hastebin', hb).replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$reason', entry.reason); bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); } } - catch(e) { + catch (e) { console.log(e); } }); @@ -174,24 +217,24 @@ exports.loadModule = function loadModule () { let entry = auditlog.entries[0]; let hb = ""; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'User banned :\n'; - hastebinMessage += JSON.stringify(user) + '\n'; - hastebinMessage += user.username + '#' + user.discriminator + ' with id ' + user.id + '\n\n'; + let hastebinMessage = 'guildBanAdd event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(user) + '\n\n'; hastebinMessage += '---\n\n'; - hastebinMessage += 'Audit Log Informations !\n\n'; - hastebinMessage += 'Additional informations on the ban :\n'; - hastebinMessage += 'Reason :\n\n'; - hastebinMessage += entry.reason + '\n\n'; - hastebinMessage += 'Responsible :\n'; - hastebinMessage += JSON.stringify(entry.user) + '\n'; - hastebinMessage += entry.user.username + '#' + entry.user.discriminator + ' with id ' + entry.user.id; + hastebinMessage += 'Responsible User\'s Name : ' + entry.user.username + '#' + entry.user.discriminator + '\n'; + hastebinMessage += 'Responsible User\'s Id : ' + entry.user.id + '\n\n'; + hastebinMessage += 'Banned User\'s Name : ' + user.username + '#' + user.discriminator + '\n'; + hastebinMessage += 'Banned User\'s Id : ' + entry.user.id + '\n\n'; + hastebinMessage += 'Reason : ' + entry.reason + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); hb = await hastebin(configM.config.hastebinServer, hastebinMessage); } - let finalMessage = a.event.msg.replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$userId', user.id).replace('$user', user.username + '#' + user.discriminator).replace('$hastebin', hb).replace('$reason', entry.reason); + let finalMessage = a.event.msg.replace('$bannedId', user.id).replace('$banned', user.username + '#' + user.discriminator).replace('$hastebin', hb).replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$reason', entry.reason); bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); } } - catch(e) { + catch (e) { console.log(e); } }); @@ -203,24 +246,24 @@ exports.loadModule = function loadModule () { let entry = auditlog.entries[0]; let hb = ""; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'User unbanned :\n'; - hastebinMessage += JSON.stringify(user) + '\n'; - hastebinMessage += user.username + '#' + user.discriminator + ' with id ' + user.id + '\n\n'; + let hastebinMessage = 'guildBanRemove event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(user) + '\n\n'; hastebinMessage += '---\n\n'; - hastebinMessage += 'Audit Log Informations !\n\n'; - hastebinMessage += 'Additional informations on the unban :\n'; - hastebinMessage += 'Reason :\n\n'; - hastebinMessage += entry.reason + '\n\n'; - hastebinMessage += 'Responsible :\n'; - hastebinMessage += JSON.stringify(entry.user) + '\n'; - hastebinMessage += entry.user.username + '#' + entry.user.discriminator + ' with id ' + entry.user.id; + hastebinMessage += 'Responsible User\'s Name : ' + entry.user.username + '#' + entry.user.discriminator + '\n'; + hastebinMessage += 'Responsible User\'s Id : ' + entry.user.id + '\n\n'; + hastebinMessage += 'Unbanned User\'s Name : ' + user.username + '#' + user.discriminator + '\n'; + hastebinMessage += 'Unbanned User\'s Id : ' + entry.user.id + '\n\n'; + hastebinMessage += 'Reason : ' + entry.reason + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); hb = await hastebin(configM.config.hastebinServer, hastebinMessage); } - let finalMessage = a.event.msg.replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$userId', user.id).replace('$user', user.username + '#' + user.discriminator).replace('$hastebin', hb).replace('$reason', entry.reason); + let finalMessage = a.event.msg.replace('$unbannedId', user.id).replace('$unbanned', user.username + '#' + user.discriminator).replace('$hastebin', hb).replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$reason', entry.reason); bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); } } - catch(e) { + catch (e) { console.log(e); } }); @@ -232,29 +275,28 @@ exports.loadModule = function loadModule () { let entry = auditlog.entries[0]; let hb = ""; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'Gateway info :\n'; - hastebinMessage += 'New emojis array\n\n'; - hastebinMessage += JSON.stringify(emojis) + '\n\n'; - hastebinMessage += 'Old emojis array\n\n'; + let hastebinMessage = 'guildEmojiAdd event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; hastebinMessage += JSON.stringify(oldEmojis) + '\n\n'; + hastebinMessage += JSON.stringify(emojis) + '\n\n'; hastebinMessage += '---\n\n'; - hastebinMessage += 'Audit Log Moment of the day !\n\n'; - hastebinMessage += 'State of the emoji before :\n'; - hastebinMessage += JSON.stringify(entry.before) + ' (no way, it\'s the emoji create event also, what did you expect)\n\n'; - hastebinMessage += 'State of the emoji after :\n\n'; - hastebinMessage += JSON.stringify(entry.after) + '\n\n'; - hastebinMessage += 'Full emoji object à la audit log :\n\n'; - hastebinMessage += JSON.stringify(entry.target) + '\n\n'; - hastebinMessage += 'Responsible :\n\n'; - hastebinMessage += JSON.stringify(entry.user) + '\n'; - hastebinMessage += entry.user.username + '#' + entry.user.discriminator + ' with id ' + entry.user.id; + hastebinMessage += 'Responsible User\'s Name : ' + entry.user.username + '#' + entry.user.discriminator + '\n'; + hastebinMessage += 'Responsible User\'s Id : ' + entry.user.id + '\n\n'; + hastebinMessage += 'Emoji Name : ' + entry.target.name + '\n'; + hastebinMessage += 'Emoji Id : ' + entry.target.id + '\n\n'; + hastebinMessage += 'Reason : ' + entry.reason + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += 'Hyper cool before -> after event thing :\n'; + hastebinMessage += buildDiffs(entry.after, entry.before) + '\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); hb = await hastebin(configM.config.hastebinServer, hastebinMessage); } - let finalMessage = a.event.msg.replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$emojiId', entry.target.id).replace('$emoji', entry.target.name).replace('$hastebin', hb); + let finalMessage = a.event.msg.replace('$emojiId', entry.target.id).replace('$emoji', entry.target.name).replace('$hastebin', hb).replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$reason', entry.reason); bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); } } - catch(e) { + catch (e) { console.log(e); } } @@ -266,29 +308,29 @@ exports.loadModule = function loadModule () { let entry = auditlog.entries[0]; let hb = ""; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'Gateway info :\n'; - hastebinMessage += 'New emojis array\n\n'; - hastebinMessage += JSON.stringify(emojis) + '\n\n'; - hastebinMessage += 'Old emojis array\n\n'; + let hastebinMessage = 'guildEmojiUpdate event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; hastebinMessage += JSON.stringify(oldEmojis) + '\n\n'; + hastebinMessage += JSON.stringify(emojis) + '\n\n'; hastebinMessage += '---\n\n'; - hastebinMessage += 'Audit Log Thing !\n\n'; - hastebinMessage += 'State of the emoji before :\n'; - hastebinMessage += JSON.stringify(entry.before) + ' (yep, this time it\'s an update)\n\n'; - hastebinMessage += 'State of the emoji after :\n\n'; - hastebinMessage += JSON.stringify(entry.after) + '\n\n'; - hastebinMessage += 'Full emoji object à la audit log :\n\n'; - hastebinMessage += JSON.stringify(entry.target) + '\n\n'; - hastebinMessage += 'Responsible :\n\n'; - hastebinMessage += JSON.stringify(entry.user) + '\n'; - hastebinMessage += entry.user.username + '#' + entry.user.discriminator + ' with id ' + entry.user.id; + hastebinMessage += 'Responsible User\'s Name : ' + entry.user.username + '#' + entry.user.discriminator + '\n'; + hastebinMessage += 'Responsible User\'s Id : ' + entry.user.id + '\n\n'; + hastebinMessage += 'Emoji Id : ' + entry.target.id + '\n\n'; + hastebinMessage += 'Updated Emoji Name : ' + entry.after.name + '\n\n'; + hastebinMessage += 'Old Emoji Name : ' + entry.before.name + '\n\n'; + hastebinMessage += 'Reason : ' + entry.reason + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += 'Hyper cool before -> after event thing :\n'; + hastebinMessage += buildDiffs(entry.after, entry.before) + '\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); hb = await hastebin(configM.config.hastebinServer, hastebinMessage); } - let finalMessage = a.event.msg.replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$emojiId', oldEmojis[0].id).replace('$emoji', entry.target.name).replace('$hastebin', hb); + let finalMessage = a.event.msg.replace('$emojiId', entry.target.id).replace('$emoji', entry.target.name).replace('$oldEmoji', entry.before.name).replace('$hastebin', hb).replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$reason', entry.reason); bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); } } - catch(e) { + catch (e) { console.log(e); } } @@ -300,29 +342,28 @@ exports.loadModule = function loadModule () { let entry = auditlog.entries[0]; let hb = ""; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'Gateway info :\n'; - hastebinMessage += 'New emojis array\n\n'; - hastebinMessage += JSON.stringify(emojis) + '\n\n'; - hastebinMessage += 'Old emojis array\n\n'; + let hastebinMessage = 'guildEmojiDelete event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; hastebinMessage += JSON.stringify(oldEmojis) + '\n\n'; + hastebinMessage += JSON.stringify(emojis) + '\n\n'; hastebinMessage += '---\n\n'; - hastebinMessage += 'Audit Log:tm: Again:tm: !\n\n'; - hastebinMessage += 'State of the emoji before :\n'; - hastebinMessage += JSON.stringify(entry.before) + '\n\n'; - hastebinMessage += 'State of the emoji after :\n\n'; - hastebinMessage += JSON.stringify(entry.after) + ' (nope again, it\'s a delete event smh)\n\n'; - hastebinMessage += 'Full emoji object à la audit log :\n\n'; - hastebinMessage += JSON.stringify(entry.target) + '\n\n'; - hastebinMessage += 'Responsible :\n\n'; - hastebinMessage += JSON.stringify(entry.user) + '\n'; - hastebinMessage += entry.user.username + '#' + entry.user.discriminator + ' with id ' + entry.user.id; + hastebinMessage += 'Responsible User\'s Name : ' + entry.user.username + '#' + entry.user.discriminator + '\n'; + hastebinMessage += 'Responsible User\'s Id : ' + entry.user.id + '\n\n'; + hastebinMessage += 'Deleted Emoji Name : ' + entry.target.name + '\n'; + hastebinMessage += 'Deleted Emoji Id : ' + entry.target.id + '\n\n'; + hastebinMessage += 'Reason : ' + entry.reason + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += 'Hyper cool before -> after event thing :\n'; + hastebinMessage += buildDiffs(entry.after, entry.before) + '\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); hb = await hastebin(configM.config.hastebinServer, hastebinMessage); } - let finalMessage = a.event.msg.replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$emojiId', oldEmojis[0].id).replace('$emoji', oldEmojis[0].name).replace('$hastebin', hb); + let finalMessage = a.event.msg.replace('$emojiId', entry.target.id).replace('$emoji', entry.target.name).replace('$hastebin', hb).replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$reason', entry.reason); bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); } } - catch(e) { + catch (e) { console.log(e); } } @@ -346,23 +387,26 @@ exports.loadModule = function loadModule () { if (a.event.d === true) { let hb = ""; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'Gateway info :\n'; - hastebinMessage += 'Member info :\n\n'; - hastebinMessage += JSON.stringify(member); - hastebinMessage += member.user.username + '#' + member.user.discriminator + ' with id ' + member.user.id; + let hastebinMessage = 'guildMemberAdd event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(member) + '\n\n'; hastebinMessage += '---\n\n'; - hastebinMessage += 'No Audit Log time this time lol !\n\n'; + hastebinMessage += 'New Member\'s Name : ' + member.user.username + '#' + member.user.discriminator + '\n'; + hastebinMessage += 'New Member\'s Id : ' + member.user.id + '\n'; + hastebinMessage += (member.user.bot ? 'New member is a bot' : 'New member is not a bot') + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); hb = await hastebin(configM.config.hastebinServer, hastebinMessage); } let finalMessage = a.event.msg.replace('$memberId', member.user.id).replace('$member', member.user.username + '#' + member.user.discriminator).replace('$hastebin', hb); bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); } } - catch(e) { + catch (e) { console.log(e); } }); - let lastAuditLogId = ''; + let lastKickAuditLogId = {}; // Maybe make a second thing like guildMemberLeft async function guildMemberRemove(guild, member) { try { @@ -370,51 +414,51 @@ exports.loadModule = function loadModule () { if (a.event.d === true) { let hb = ""; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'Gateway info :\n'; - hastebinMessage += 'Member info :\n\n'; - hastebinMessage += JSON.stringify(member) + '\n'; - hastebinMessage += member.user.username + '#' + member.user.discriminator + ' with id ' + member.user.id + '\n\n'; + let hastebinMessage = 'guildMemberRemove event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(member) + '\n\n'; hastebinMessage += '---\n\n'; - hastebinMessage += 'No Audit Log time this time lol !'; + hastebinMessage += 'Member\'s Name : ' + member.user.username + '#' + member.user.discriminator + '\n'; + hastebinMessage += 'Member\'s Id : ' + member.user.id + '\n'; + hastebinMessage += (member.user.bot ? 'Member was a bot' : 'Member was not a bot') + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); hb = await hastebin(configM.config.hastebinServer, hastebinMessage); } let finalMessage = a.event.msg.replace('$memberId', member.user.id).replace('$member', member.user.username + '#' + member.user.discriminator).replace('$hastebin', hb); bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); } } - catch(e) { + catch (e) { console.log(e); } } // Make a second thing like that for Pollr like mod-log - async function guildMemberKick(guild, member) { + async function guildMemberKick(guild, member, auditlog) { try { let a = await dbEI.getEvent(guild.id, 'guildMemberKick'); if (a.event.d === true) { - let auditlog = await bot.getGuildAuditLogs(guild.id, 1); let entry = auditlog.entries[0]; - lastAuditLogId = entry.id; let hb = ""; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'Gateway info :\n'; - hastebinMessage += 'Member info :\n\n'; - hastebinMessage += JSON.stringify(member) + '\n'; - hastebinMessage += member.user.username + '#' + member.user.discriminator + ' with id ' + member.user.id + '\n\n'; + let hastebinMessage = 'guildMemberKick event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(member) + '\n\n'; hastebinMessage += '---\n\n'; - hastebinMessage += 'Audit Log Can you see ?\n'; - hastebinMessage += 'Additional information on the kick\n\n'; - hastebinMessage += 'Reason :\n'; - hastebinMessage += entry.reason + '\n\n'; - hastebinMessage += 'Responsible :\n'; - hastebinMessage += JSON.stringify(entry.user) + '\n'; - hastebinMessage += entry.user.username + '#' + entry.user.discriminator + ' with id ' + entry.user.id; + hastebinMessage += 'Responsible User\'s Name : ' + entry.user.username + '#' + entry.user.discriminator + '\n'; + hastebinMessage += 'Responsible User\'s Id : ' + entry.user.id + '\n\n'; + hastebinMessage += 'Kicked User\'s Name : ' + member.user.username + '#' + member.user.discriminator + '\n'; + hastebinMessage += 'Kicked User\'s Id : ' + member.user.id + '\n\n'; + hastebinMessage += 'Reason : ' + entry.reason + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); hb = await hastebin(configM.config.hastebinServer, hastebinMessage); } - let finalMessage = a.event.msg.replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$memberId', member.user.id).replace('$member', member.user.username + '#' + member.user.discriminator).replace('$reason', entry.reason).replace('$hastebin', hb); + let finalMessage = a.event.msg.replace('$kickedId', member.user.id).replace('$kicked', member.user.username + '#' + member.user.discriminator).replace('$hastebin', hb).replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$reason', entry.reason); bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); } } - catch(e) { + catch (e) { console.log(e); } } @@ -423,8 +467,8 @@ exports.loadModule = function loadModule () { let date = new Date(); let auditlog = await bot.getGuildAuditLogs(guild.id, 1); let entry = auditlog.entries[0]; - if (entry.actionType === 20 && entry.id !== lastAuditLogId) { - return guildMemberKick(guild, member); + if (entry.actionType === 20 && entry.id !== lastAuditLogId[guild.id]) { + return guildMemberKick(guild, member, auditlog); } else if (entry.actionType !== 22) { return guildMemberRemove(guild, member); @@ -434,4 +478,44 @@ exports.loadModule = function loadModule () { console.log(e); } }); + bot.on('guildMemberUpdate', async (guild, member, oldMember) => { + try { + let a = await dbEI.getEvent(guild.id, 'guildMemberUpdate'); + if (a.event.d === true) { + let auditlog = await bot.getGuildAuditLogs(guild.id, 1); + let entry = auditlog.entries[0]; + let hb = ""; + let diffs = ''; + if (a.event.msg.includes("$hastebin") || a.event.msg.includes("$recapitulative")) { + diffs = buildDiffs(entry.after, entry.before); + } + if (a.event.msg.includes("$hastebin")) { + let hastebinMessage = 'guildMemberUpdate event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(oldMember) + '\n\n'; + hastebinMessage += JSON.stringify(member) + '\n\n'; + hastebinMessage += '---\n\n'; + if (entry.user !== member.user) { + hastebinMessage += 'Responsible User\'s Name : ' + entry.user.username + '#' + entry.user.discriminator + '\n'; + hastebinMessage += 'Responsible User\'s Id : ' + entry.user.id + '\n\n'; + } + hastebinMessage += 'Member\'s Name : ' + member.user.username + '#' + member.user.discriminator + '\n'; + hastebinMessage += 'Member\'s Id : ' + member.user.id + '\n'; + hastebinMessage += 'Member\'s Nickname : ' + member.nick + '\n\n'; + hastebinMessage += 'Reason : ' + entry.reason + '\n\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += 'Hyper cool before -> after event thing :\n'; + hastebinMessage += diffs + '\n'; + hastebinMessage += '---\n\n'; + hastebinMessage += new Date().toISOString(); + hb = await hastebin(configM.config.hastebinServer, hastebinMessage); + } + let finalMessage = a.event.msg.replace('$memberId', member.user.id).replace('$member', member.user.username).replace('$hastebin', hb).replace('$responsibleId', entry.user.id).replace('$responsible', entry.user.username + '#' + entry.user.discriminator).replace('$reason', entry.reason).replace('$recapitulative', diffs);; + bot.createMessage(a.event.c === 'f' ? a.fallbackChannelId : a.event.c, finalMessage); + } + } + catch (e) { + console.log(e); + } + }); }; \ No newline at end of file