From 597cdbc0e052035c03e47c52df2526cda4326e70 Mon Sep 17 00:00:00 2001 From: ahoZiorce Date: Tue, 3 Jul 2018 22:56:46 +0200 Subject: [PATCH] Added custom events --- src/botClient.js | 11 ++- src/cmd/events.js | 214 ++++++++++++++++++++++++++++++++++++++-- src/dbEventInterface.js | 40 +++++++- 3 files changed, 250 insertions(+), 15 deletions(-) diff --git a/src/botClient.js b/src/botClient.js index 00b6a67..f168ab1 100644 --- a/src/botClient.js +++ b/src/botClient.js @@ -1,3 +1,12 @@ const Eris = require('eris'); const configM = require('./configManager'); -exports.bot = new Eris(configM.config.token); \ No newline at end of file +exports.bot = new Eris(configM.config.token, { + disableEvents: { + "PRESENCE_UPDATE": true, + "VOICE_STATE_UPDATE": true, + "MESSAGE_DELETE_BULK": true, + "TYPING_START": true, + }, + compress: true, + disableEveryone: false, +}); \ No newline at end of file diff --git a/src/cmd/events.js b/src/cmd/events.js index 412748c..64f9c7c 100644 --- a/src/cmd/events.js +++ b/src/cmd/events.js @@ -220,16 +220,14 @@ exports.loadModule = function loadModule() { console.log(e); } }); - // Do another option to have a Pollr type of thing for ban, unban and kick - bot.on('guildBanAdd', async (guild, user) => { + async function shameBan(guild, user, auditlog) { try { - let a = await dbEI.getEvent(guild.id, 'guildBanAdd'); + let a = await dbEI.getEvent(guild.id, 'shameBan'); if (a.event.d === true) { - let auditlog = await bot.getGuildAuditLogs(guild.id, 1); let entry = auditlog.entries[0]; let hb = ''; if (a.event.msg.includes("$hastebin")) { - let hastebinMessage = 'guildBanAdd event triggered :\n\n'; + let hastebinMessage = 'shameBan event triggered :\n\n'; hastebinMessage += 'Raw event info :\n\n'; hastebinMessage += JSON.stringify(user) + '\n\n'; hastebinMessage += '---\n\n'; @@ -249,12 +247,99 @@ exports.loadModule = function loadModule() { catch (e) { console.log(e); } + } + async function pollrLikeBan(guild, user, auditlog) { + try { + let a = await dbEI.getEvent(guild.id, 'pollrLikeBan'); + if (a.event.d === true) { + let entry = auditlog.entries[0]; + let hb = ''; + if (a.event.msg.includes("$hastebin")) { + let hastebinMessage = 'pollrLikeBan event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(user) + '\n\n'; + hastebinMessage += '---\n\n'; + 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('$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) { + console.log(e); + } + } + bot.on('guildBanAdd', async (guild, user) => { + try { + let auditlog = await bot.getGuildAuditLogs(guild.id, 1); + let a = await dbEI.getEvent(guild.id, 'guildBanAdd'); + if (a.event.d === true) { + let entry = auditlog.entries[0]; + let hb = ''; + if (a.event.msg.includes("$hastebin")) { + let hastebinMessage = 'guildBanAdd event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(user) + '\n\n'; + hastebinMessage += '---\n\n'; + 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('$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); + } + shameBan(guild, user, auditlog); + pollrLikeBan(guild, user, auditlog); + } + catch (e) { + console.log(e); + } }); + async function pollrLikeUnban(guild, user, auditlog) { + try { + let a = await dbEI.getEvent(guild.id, 'pollrLikeUnban'); + if (a.event.d === true) { + let entry = auditlog.entries[0]; + let hb = ''; + if (a.event.msg.includes("$hastebin")) { + let hastebinMessage = 'pollrLikeUnban event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(user) + '\n\n'; + hastebinMessage += '---\n\n'; + 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('$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) { + console.log(e); + } + } bot.on('guildBanRemove', async (guild, user) => { try { + let auditlog = await bot.getGuildAuditLogs(guild.id, 1); let a = await dbEI.getEvent(guild.id, 'guildBanRemove'); if (a.event.d === true) { - let auditlog = await bot.getGuildAuditLogs(guild.id, 1); let entry = auditlog.entries[0]; let hb = ''; if (a.event.msg.includes("$hastebin")) { @@ -274,6 +359,7 @@ exports.loadModule = function loadModule() { 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); } + pollrLikeUnban(guild, user, auditlog); } catch (e) { console.log(e); @@ -392,7 +478,31 @@ exports.loadModule = function loadModule() { return guildEmojiDelete(guild, emojis, oldEmojis); } }); - // Add a second identical event for welcome message like memberJoined + async function memberJoin(guild, member) { + try { + let a = await dbEI.getEvent(guild.id, 'memberJoin'); + if (a.event.d === true) { + let hb = ''; + if (a.event.msg.includes("$hastebin")) { + let hastebinMessage = 'memberJoin event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(member) + '\n\n'; + hastebinMessage += '---\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) { + console.log(e); + } + } bot.on('guildMemberAdd', async (guild, member) => { try { let a = await dbEI.getEvent(guild.id, 'guildMemberAdd'); @@ -413,6 +523,7 @@ exports.loadModule = function loadModule() { 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); } + memberJoin(guild, member); } catch (e) { console.log(e); @@ -420,6 +531,31 @@ exports.loadModule = function loadModule() { }); let lastKickAuditLogId = {}; // Maybe make a second thing like guildMemberLeft + async function memberLeft(guild, member) { + try { + let a = await dbEI.getEvent(guild.id, 'memberLeft'); + if (a.event.d === true) { + let hb = ''; + if (a.event.msg.includes("$hastebin")) { + let hastebinMessage = 'memberLeft event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(member) + '\n\n'; + hastebinMessage += '---\n\n'; + 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) { + console.log(e); + } + } async function guildMemberRemove(guild, member) { try { let a = await dbEI.getEvent(guild.id, 'guildMemberRemove'); @@ -440,12 +576,68 @@ exports.loadModule = function loadModule() { 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); } + memberLeft(guild, member); + } + catch (e) { + console.log(e); + } + } + async function shameKick(guild, member, auditlog) { + try { + let a = await dbEI.getEvent(guild.id, 'shameKick'); + if (a.event.d === true) { + let entry = auditlog.entries[0]; + let hb = ''; + if (a.event.msg.includes("$hastebin")) { + let hastebinMessage = 'shameKick event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(member) + '\n\n'; + hastebinMessage += '---\n\n'; + 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('$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) { + console.log(e); + } + } + async function pollrLikeKick(guild, member, auditlog) { + try { + let a = await dbEI.getEvent(guild.id, 'pollrLikeKick'); + if (a.event.d === true) { + let entry = auditlog.entries[0]; + let hb = ''; + if (a.event.msg.includes("$hastebin")) { + let hastebinMessage = 'pollrLikeKick event triggered :\n\n'; + hastebinMessage += 'Raw event info :\n\n'; + hastebinMessage += JSON.stringify(member) + '\n\n'; + hastebinMessage += '---\n\n'; + 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('$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) { console.log(e); } } - // Make a second thing like that for Pollr like mod-log async function guildMemberKick(guild, member, auditlog) { try { let a = await dbEI.getEvent(guild.id, 'guildMemberKick'); @@ -469,6 +661,8 @@ exports.loadModule = function loadModule() { 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); } + shameKick(guild, member, auditlog); + pollrLikeKick(guild, member, auditlog); } catch (e) { console.log(e); @@ -479,7 +673,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[guild.id]) { + if (entry.actionType === 20 && entry.id !== lastKickAuditLogId[guild.id]) { + lastKickAuditLogId[guild.id] = entry.id; return guildMemberKick(guild, member, auditlog); } else if (entry.actionType !== 22) { @@ -697,6 +892,7 @@ exports.loadModule = function loadModule() { else { hastebinMessage += 'Member has deleted himself the message\n\n'; } + console.log(message); hastebinMessage += 'Message Author\'s Name : ' + message.author.username + '#' + message.author.discriminator + '\n'; hastebinMessage += 'Message Author\'s Id : ' + message.author.id + '\n\n'; hastebinMessage += 'Message Channel Name : ' + message.channel.name + '\n'; diff --git a/src/dbEventInterface.js b/src/dbEventInterface.js index be5c1e8..313ebc8 100644 --- a/src/dbEventInterface.js +++ b/src/dbEventInterface.js @@ -88,11 +88,26 @@ exports.initServer = function initServer(id, cId) { msg: '', c: 'f', }, + shameBan: { + d: true, + msg: '', + c: 'f', + }, + pollrLikeBan: { + d: true, + msg: '', + c: 'f', + }, guildBanAdd: { d: true, msg: '', c: 'f', }, + pollrLikeUnban: { + d: true, + msg: '', + c: 'f', + }, guildBanRemove: { d: true, msg: '', @@ -113,16 +128,36 @@ exports.initServer = function initServer(id, cId) { msg: '', c: 'f', }, + memberJoin: { + d: false, + msg: '', + c: 'f', + }, guildMemberAdd: { d: true, msg: '', c: 'f', }, + memberLeft: { + d: false, + msg: '', + c: 'f', + }, guildMemberRemove: { d: true, msg: '', c: 'f', }, + shameKick: { + d: true, + msg: '', + c: 'f', + }, + pollrLikeKick: { + d: true, + msg: '', + c: 'f', + }, guildMemberKick: { d: true, msg: '', @@ -173,11 +208,6 @@ exports.initServer = function initServer(id, cId) { msg: '', c: 'f', }, - presenceUpdate: { - d: true, - msg: '', - c: 'f', - }, }, }; return put(id, deflateObj(obj));