From 45db638e1113b8ca583a9087993230ed07e9a2e0 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 10 Mar 2018 22:54:50 -0400 Subject: testing my luck --- Plugins/settings.js | 65 ++++++++++++++++++++++++++++++++++++++++++ bot.js | 2 +- commands/Moderation/setLogs.js | 36 +++++++++++++++++++++++ events/guildMemberAdd.js | 16 ++++------- events/guildMemberRemove.js | 8 ++++-- events/messageDelete.js | 7 +++-- events/messageDeleteBulk.js | 5 ++-- events/messageUpdate.js | 5 ++-- 8 files changed, 122 insertions(+), 22 deletions(-) create mode 100644 Plugins/settings.js create mode 100644 commands/Moderation/setLogs.js diff --git a/Plugins/settings.js b/Plugins/settings.js new file mode 100644 index 0000000..d458c9c --- /dev/null +++ b/Plugins/settings.js @@ -0,0 +1,65 @@ +/** ************************************** + * + * Settings: Plugin for PokeBot that enables settings features. + * Copyright (C) 2018 TheEdge, jtsshieh, Alee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * *************************************/ + +const db = require('quick.db'); +exports.getInt = async (key, guildID) => { + const value = await db.fetch(`settings_${guildID}_${key}`); + if (value) { + return value; + } + else { + await db.set(`settings_${guildID}_${key}`, 0); + return await db.fetch(`settings_${guildID}_${key}`); + } +}; + +exports.getStr = async (key, guildID) => { + const value = await db.fetch(`settings_${guildID}_${key}`); + if (value) { + return value; + } + else { + await db.set(`settings_${guildID}_${key}`, ''); + return await db.fetch(`settings_${guildID}_${key}`); + } +}; + +exports.getBool = async (key, guildID) => { + const value = await db.fetch(`settings_${guildID}_${key}`); + if (value) { + return value; + } + else { + await db.set(`settings_${guildID}_${key}`, false); + return await db.fetch(`settings_${guildID}_${key}`); + } +}; + +exports.setInt = async (key, value, guildID) => { + await db.set(`settings_${guildID}_${key}`, parseInt(value)); +}; + +exports.setStr = async (key, value, guildID) => { + await db.set(`settings_${guildID}_${key}`, value); +}; + +exports.setBool = async (key, value, guildID) => { + await db.set(`settings_${guildID}_${key}`, (value == true)); +}; diff --git a/bot.js b/bot.js index f97343f..42e29c1 100644 --- a/bot.js +++ b/bot.js @@ -7,7 +7,7 @@ bot.commands = new Discord.Collection(); bot.aliases = new Discord.Collection(); bot.categories = new Discord.Collection(); bot.queue = new Discord.Collection(); -bot.plugins = { music : require('./Plugins/Music.js') , economy : require('./Plugins/Economy.js')}; +bot.plugins = { music : require('./Plugins/Music.js') , economy : require('./Plugins/Economy.js'), settings : require('./Plugins/settings.js')}; cmdLoader(); async function cmdLoader() { diff --git a/commands/Moderation/setLogs.js b/commands/Moderation/setLogs.js new file mode 100644 index 0000000..a354085 --- /dev/null +++ b/commands/Moderation/setLogs.js @@ -0,0 +1,36 @@ +/** ************************************** + * + * Set Log: Plugin for PokeBot that performs moderation actions. + * Copyright (C) 2018 TheEdge, jtsshieh, Alee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * *************************************/ + +exports.run = async (bot, msg, args) => { + if (!msg.member.hasPermission('MANAGE_MESSAGES')) return msg.reply('You don\'t have permission to manage messages.'); + bot.plugins.settings.setStr('logs', args[0], msg.guild.id); + msg.reply('Alright, I have set the log channel to ' + args[0]); +}; + +exports.conf = { + aliases: [], + guildOnly: true, +}; + +exports.help = { + name: 'setLogs', + description: 'Set\'s the Log Channel.', + usage: '', +}; diff --git a/events/guildMemberAdd.js b/events/guildMemberAdd.js index f324e73..20b61b6 100644 --- a/events/guildMemberAdd.js +++ b/events/guildMemberAdd.js @@ -18,10 +18,10 @@ * * *************************************/ -module.exports = (bot, member) => { +module.exports = async (bot, member) => { const { RichEmbed } = require('discord.js'); - bot.channels.find('name', 'welcome').send(`Welcome to the server **${member.user.tag}**! Make sure to read the rules! We now have ${member.guild.memberCount} members.`); - bot.channels.find('name', 'logs').send( + const logChannel = await bot.plugins.settings.getStr('logs', member.guild.id); + bot.channels.find('id', logChannel).send( new RichEmbed() .setColor(0x00ae86) .setTitle(`:arrow_right: ${member.user.tag}`) @@ -31,14 +31,8 @@ module.exports = (bot, member) => { .setTimestamp() .setFooter(member.user.tag, member.user.avatarURL) ); + if (member.guild.id != '417088992329334792') return; + bot.channels.find('name', 'welcome').send(`Welcome to the server **${member.user.tag}**! Make sure to read the rules! We now have ${member.guild.memberCount} members.`); const role = member.guild.roles.find('name', 'Trainers'); member.addRole(role); - - const DMMember = 'Hello, Alee is still working on this feature...'; - member.user.send( - new RichEmbed() - .setColor(0x00ae86) - .setTitle('Pokebot') - .setDescription(DMMember) - ); }; diff --git a/events/guildMemberRemove.js b/events/guildMemberRemove.js index 2fc1760..7693372 100644 --- a/events/guildMemberRemove.js +++ b/events/guildMemberRemove.js @@ -18,10 +18,10 @@ * * *************************************/ -module.exports = (bot, member) => { +module.exports = async (bot, member) => { const { RichEmbed } = require('discord.js'); - bot.channels.find('name', 'welcome').send(`**${member.user.tag}** just left. We now have ${member.guild.memberCount} members left. Aww man...`); - bot.channels.find('name', 'logs').send( + const logChannel = await bot.plugins.settings.getStr('logs', member.guild.id); + bot.channels.find('id', logChannel).send( new RichEmbed() .setColor(0x00ae86) .setTitle(`:arrow_left: ${member.user.tag}`) @@ -32,4 +32,6 @@ module.exports = (bot, member) => { .setTimestamp() .setFooter(member.user.tag, member.user.avatarURL) ); + if (member.guild.id != '417088992329334792') return; + bot.channels.find('name', 'welcome').send(`**${member.user.tag}** just left. We now have ${member.guild.memberCount} members left. Aww man...`); }; diff --git a/events/messageDelete.js b/events/messageDelete.js index 627b2e0..2823e7f 100644 --- a/events/messageDelete.js +++ b/events/messageDelete.js @@ -18,9 +18,9 @@ * * *************************************/ -module.exports = (bot, msg) => { +module.exports = async (bot, msg) => { const { RichEmbed } = require('discord.js'); - if(!msg.content) return; + if (!msg.content) return; try { const embed = new RichEmbed() .setColor(0x00ae86) @@ -29,7 +29,8 @@ module.exports = (bot, msg) => { .addField('Deleted Message', msg.content) .setTimestamp() .setFooter(`Deleted message orginally created by: ${msg.author.tag}`, msg.author.avatarURL); - msg.guild.channels.find('name', 'logs').send({ embed }); + const logChannel = await bot.plugins.settings.getStr('logs', msg.guild.id); + msg.guild.channels.find('id', logChannel).send({ embed }); } catch (err) { console.error(err.stack); diff --git a/events/messageDeleteBulk.js b/events/messageDeleteBulk.js index 1a5d1d1..0d0c345 100644 --- a/events/messageDeleteBulk.js +++ b/events/messageDeleteBulk.js @@ -18,7 +18,7 @@ * * *************************************/ -module.exports = (bot, msgs) => { +module.exports = async (bot, msgs) => { const { RichEmbed } = require('discord.js'); try { const embed = new RichEmbed() @@ -27,7 +27,8 @@ module.exports = (bot, msgs) => { .setDescription(`${msgs.size} messages in *${msgs.first().channel}* were bulk deleted.`) .setTimestamp() .setFooter('Messages purged'); - msgs.first().guild.channels.find('name', 'logs').send({ embed }); + const logChannel = await bot.plugins.settings.getStr('logs', msgs.first().guild.id); + msgs.first().guild.channels.find('id', logChannel).send({ embed }); } catch (err) { console.error(err.stack); diff --git a/events/messageUpdate.js b/events/messageUpdate.js index 59133cb..ed0565b 100644 --- a/events/messageUpdate.js +++ b/events/messageUpdate.js @@ -18,7 +18,7 @@ * * *************************************/ -module.exports = (bot, oldMsg, newMsg) => { +module.exports = async (bot, oldMsg, newMsg) => { const { RichEmbed } = require('discord.js'); if (oldMsg.content == newMsg.content) return; try { @@ -30,7 +30,8 @@ module.exports = (bot, oldMsg, newMsg) => { .addField('New Message', newMsg.content) .setTimestamp() .setFooter(`Edited message originally created by: ${oldMsg.author.tag}`, oldMsg.author.avatarURL); - newMsg.guild.channels.find('name', 'logs').send({ embed }); + const logChannel = await bot.plugins.settings.getStr('logs', oldMsg.guild.id); + newMsg.guild.channels.find('id', logChannel).send({ embed }); } catch (err) { console.error(err.stack); -- cgit v1.2.3