diff --git a/PRIVATEPOLICY.md b/PRIVATEPOLICY.md new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json index e483d09..01ace51 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,9 @@ "description": "A discord bot intended to complete the audit log", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "development": "nodemon", + "run": "node index.js", + "deploypm2": "pm2 start index.js --name \"logori\"" }, "author": "Alejandro W. Sior, Ben Kyd (https://benkyd.co.uk)", "license": "MIT", diff --git a/scripts/deploy2.0.js b/scripts/deploy2.0.js new file mode 100644 index 0000000..e69de29 diff --git a/src/ajds-core.js b/src/ajds-core.js index 0817762..6e699b5 100644 --- a/src/ajds-core.js +++ b/src/ajds-core.js @@ -1,5 +1,10 @@ const OffensiveWordsList = require('./ajds-wordslist.js').BlackList; +// AJDS stands for the Automated James Defense System +// or the Anti James Defense System +// first conseptualised by UDXS and Ben at +// https://github.com/terminal-atomics/ajds + module.exports.ScoreMember = async function(erismember) { // Higher score = higher trust factor diff --git a/src/database.js b/src/database.js index 1e8047a..b9e231a 100644 --- a/src/database.js +++ b/src/database.js @@ -88,6 +88,15 @@ module.exports.FetchGuild = async function(id) } } +module.exports.UpdateGuildName = async function(id, name) +{ + try { + await Guild.update({name: name}, {where: {id: id}}); + } catch (e) { + + } +} + module.exports.UpdateGuildPrefix = async function(id, prefix) { try { diff --git a/src/discord-commands.js b/src/discord-commands.js index ef08d38..d4417de 100644 --- a/src/discord-commands.js +++ b/src/discord-commands.js @@ -15,7 +15,7 @@ module.exports.registerCommands = async function() Commands['initserv'] = { command: 'initserv', alias: 'nil', name: 'Initialize Server', desc: 'Initialises a new Guild', callback: InitializeGuild, adminOnly: true }; Commands['setprefix'] = { command: 'setprefix', alias: 'prefix', name: 'Set Prefix', desc: 'Sets the servers prefix for the guild', callback: SetPrefix, adminOnly: true }; - Commands['setlogchannel'] = { command: 'setlogchannel', alias: 'log', name: 'Set Log Channel', desc: 'Sets the guild log channel to the current channel', callback: SetLogChannel, adminOnly: true }; + Commands['setfallbackchannel'] = { command: 'setlogchannel', alias: 'setlogchannel', name: 'Set Log Channel', desc: 'Sets the guild log channel to the current channel', callback: SetLogChannel, adminOnly: true }; // create a cache of prefix's so that the database doesn't have to be // queried every single time, new guilds should also add themselve's @@ -108,6 +108,7 @@ module.exports.newMessage = async function(message) async function InitializeGuild(message, args) { + // Outlines private policy etc } diff --git a/src/discord-events.js b/src/discord-events.js index 79a4d52..15e3857 100644 --- a/src/discord-events.js +++ b/src/discord-events.js @@ -166,12 +166,19 @@ function ColourConvert(colour) async function GuildCreate(guild) { - + const AlreadyGuild = await Database.FetchGuild(guild.id); + if (AlreadyGuild == -1) + { + Database.NewGuild(guild.id, guild.name, '*', -1, {}, 0); + } else { + if (AlreadyGuild.name == guild.name) return; + Database.UpdateGuildName(guild.id, guild.name); + } } async function GuildDelete(guild) { - + // TODO: innactive guild tags in the database } async function Warn(message, id) @@ -588,33 +595,35 @@ async function MessageDelete(message) const FallbackChannel = await GetLogChannel(message.channel.guild.id); if (FallbackChannel == -1) return; - const LastAuditEntry = (await message.channel.guild.getAuditLogs(1)).entries[0]; - + const LastAuditEntry = (await message.channel.guild.getAuditLogs(1, undefined, MESSAGE_DELETE)).entries[0]; const DeletedMessage = LastAuditEntry.channel.messages.random(); - Logger.debug(JSON.stringify(DeletedMessage, null, 4)) - let embed = new DiscordEmbed({ - title: LastAuditEntry.actionType == MESSAGE_DELETE ? 'Message Deleted' : 'User Deleted Own Message', - colour: ColourConvert('#E0532B'), - url: 'https://logori.xyz', - timestamp: new Date(), - footer: { text: `ID: ${message.id}` } - }); + // console.log(JSON.stringify(DeletedMessage, null, 4)) - // user DIDDNT deleted own message - if (LastAuditEntry.actionType == MESSAGE_DELETE) - { + try { + var embed = new DiscordEmbed({ + author: { + name: `${DeletedMessage.author.username}#${DeletedMessage.author.discriminator}`, + icon_url: DeletedMessage.author.avatarURL, + url: 'https://logori.xyz' + }, + title: 'Message Deleted', + colour: ColourConvert('#E0532B'), + url: 'https://logori.xyz', + timestamp: new Date(), + footer: { text: `ID: ${message.id}` } + }); + embed.field('​', `**Message Owner:** ${DeletedMessage.author.mention} **Responsible Moderator**: ${LastAuditEntry.user.mention} **Channel:** ${message.channel.mention} **Message Content:** ${DeletedMessage.content} `); - } else + } catch (e) { - embed.field('​', `**Message Owner:** ${DeletedMessage.author.mention} - **Channel:** ${message.channel.mention} - **Message Content:** ${DeletedMessage.content} `); + Logger.warn('The stupid messagedelete function messed up again'); } + Discord.bot.createMessage(FallbackChannel, { embed: embed.sendable }); } @@ -622,4 +631,26 @@ async function MessageUpdate(message, oldmessage) { const FallbackChannel = await GetLogChannel(message.channel.guild.id); if (FallbackChannel == -1) return; + + if (!message || !oldmessage) return; + if (message.content == oldmessage.content) return; + + let embed = new DiscordEmbed({ + author: { + name: `${message.author.username}#${message.author.discriminator}`, + icon_url: message.author.avatarURL, + url: 'https://logori.xyz' + }, + title: 'Message Edited', + colour: ColourConvert('#328FA8'), + url: 'https://logori.xyz', + timestamp: new Date(), + footer: { text: `ID: ${message.id}` } + }); + + embed.field('​', `**Message Owner:** ${message.author.mention} + **Old Message:**: ${oldmessage.content} + **New Message:**: ${message.content}`); + + Discord.bot.createMessage(FallbackChannel, { embed: embed.sendable }); }