diff options
| author | Trey-Server <trey6979@gmail.com> | 2018-03-10 01:32:41 +0000 |
|---|---|---|
| committer | Trey-Server <trey6979@gmail.com> | 2018-03-10 01:32:41 +0000 |
| commit | 897ec0b5b50ddeafd09602c7424c5e2aa377241f (patch) | |
| tree | 8e870772ae6e9632e1c93402d38f3b75daeb5cee | |
| parent | 435dc9902a732c0cb3d3367359910670fc65f9f2 (diff) | |
| parent | e214e6e6f17294acc88e80d57cd90a878e71c5e6 (diff) | |
| download | PokeBot-897ec0b5b50ddeafd09602c7424c5e2aa377241f.tar.gz PokeBot-897ec0b5b50ddeafd09602c7424c5e2aa377241f.tar.bz2 PokeBot-897ec0b5b50ddeafd09602c7424c5e2aa377241f.zip | |
Merge branch 'master' of https://github.com/PokeWorld/PokeBot
| -rw-r--r-- | .travis.yml | 3 | ||||
| -rw-r--r-- | LICENSE.md | 2 | ||||
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | commands/Moderation/timeout.js | 57 | ||||
| -rw-r--r-- | commands/Pokemon/forcedrop.js | 43 | ||||
| -rw-r--r-- | commands/Pokemon/join.js | 40 | ||||
| -rw-r--r-- | events/guildMemberAdd.js | 8 | ||||
| -rw-r--r-- | package-lock.json | 14 | ||||
| -rw-r--r-- | package.json | 2 | ||||
| -rw-r--r-- | test.js | 72 |
10 files changed, 218 insertions, 24 deletions
diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..2197832 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - "node" @@ -653,7 +653,7 @@ Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - {project} Copyright (C) {year} {fullname} + PokeBot Copyright (C) 2018 TheEdge, jtsshieh, Alee This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. @@ -1,5 +1,6 @@ [](https://discord.gg/YqEUBGr) []() +[](https://travis-ci.org/PokeWorld/PokeBot) # Pokebot diff --git a/commands/Moderation/timeout.js b/commands/Moderation/timeout.js new file mode 100644 index 0000000..fca7bed --- /dev/null +++ b/commands/Moderation/timeout.js @@ -0,0 +1,57 @@ +/** ************************************** + * + * Time Out: Plugin for PokeBot that punishes bad boys.. + * 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 <http://www.gnu.org/licenses/>. + * + * *************************************/ + +exports.run = async (bot, msg, args) => { + if (!msg.member.hasPermission('BAN_MEMBERS')) return msg.reply('You don\'t have permission to put members in time-out..'); + if (!msg.guild.member(bot.user).hasPermission('MANAGE_ROLES')) return msg.reply('I cannot put anyone in time-out.'); + + const member = msg.mentions.members.first(); + if (!member) return await msg.reply('Who do I put in time-out?'); + + msg.member.addRole(msg.guild.roles.find('name', 'Timeout')); + + const { RichEmbed } = require('discord.js'); + try { + const embed = new RichEmbed() + .setColor(0x00ae86) + .setAuthor(member.user.tag, member.user.avatarURL) + .setTitle(`Time Out: **${member.user.tag}**`) + .setDescription(`*${member.user.tag}* was placed in time-out by *${msg.author.tag}*.`) + .addField('Moderator', msg.author.tag) + .setTimestamp() + .setFooter(`${msg.author.tag} put ${member.user.tag} in time-out.`, msg.author.avatarURL); + msg.guild.channels.find('name', 'logs').send({ embed }); + } + catch (err) { + console.error(err.stack); + } + }; + + exports.conf = { + aliases: [], + guildOnly: true, + }; + + exports.help = { + name: 'timeout', + description: 'Put a user in time-out', + usage: '@user', + }; +
\ No newline at end of file diff --git a/commands/Pokemon/forcedrop.js b/commands/Pokemon/forcedrop.js new file mode 100644 index 0000000..1c2131f --- /dev/null +++ b/commands/Pokemon/forcedrop.js @@ -0,0 +1,43 @@ +/** ************************************** + * + * Ban: Plugin for PokeBot that powers the PokeWorld gym system. + * 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 <http://www.gnu.org/licenses/>. + * + * *************************************/ + +exports.run = async (bot, msg) => { + if (!msg.member.hasPermission('MANAGE_MESSAGES')) return msg.reply('You don\'t have permssion to ban members.'); + + if (msg.guild.id != '417088992329334792') return msg.reply ('This is a PokeWorld exclusive command. Sorry!'); + if (!msg.channel.name.startsWith('gym-')) return msg.reply('Go into one of the gym channels and try again.'); + if (msg.channel.topic == 'Current Owner: *none*') { + msg.reply('This gym does not have an owner.'); + } + else { + msg.channel.setTopic('Current Owner: *none*'); + msg.channel.send('You have dropped the gym.'); + } +}; + +exports.conf = { + aliases: [], + guildOnly: true, +}; + +exports.help = { + name: 'forcedrop', + description: 'Force a gym to have no owner.', +}; diff --git a/commands/Pokemon/join.js b/commands/Pokemon/join.js index 99640d1..6be75be 100644 --- a/commands/Pokemon/join.js +++ b/commands/Pokemon/join.js @@ -24,27 +24,27 @@ exports.run = async (bot, msg, args) => { if (args.length < 1) return msg.reply('Please choose a team to join'); const team = findTeam(msg, args[0]); - switch(args[0]) + switch (args[0]) { - case 'aqua': { - msg.member.addRole(msg.guild.roles.find('name', 'Aqua')); - msg.reply(`Alright, ${team ? 'you have left team ' + team + ' and ' : 'you have '}joined team Aqua.`); - break; - } - case 'rocket' : { - msg.member.addRole(msg.guild.roles.find('name', 'Rocket')); - msg.reply(`Alright, ${team ? 'you have left team ' + team + ' and ' : 'you have '}joined team Rocket.`); - break; - } - case 'magma' : { - msg.member.addRole(msg.guild.roles.find('name', 'Magma')); - msg.reply(`Alright, ${team ? 'you have left team ' + team + ' and ' : 'you have '}joined team Magma.`); - break; - } - default : { - msg.reply('You have to pick, aqua, rocket, or magma.'); - break; - } + case 'aqua': { + msg.member.addRole(msg.guild.roles.find('name', 'Aqua')); + msg.reply(`Alright, ${team ? 'you have left team ' + team + ' and ' : 'you have '}joined team Aqua.`); + break; + } + case 'rocket' : { + msg.member.addRole(msg.guild.roles.find('name', 'Rocket')); + msg.reply(`Alright, ${team ? 'you have left team ' + team + ' and ' : 'you have '}joined team Rocket.`); + break; + } + case 'magma' : { + msg.member.addRole(msg.guild.roles.find('name', 'Magma')); + msg.reply(`Alright, ${team ? 'you have left team ' + team + ' and ' : 'you have '}joined team Magma.`); + break; + } + default : { + msg.reply('You have to pick, aqua, rocket, or magma.'); + break; + } } }; diff --git a/events/guildMemberAdd.js b/events/guildMemberAdd.js index 2c3d21f..f324e73 100644 --- a/events/guildMemberAdd.js +++ b/events/guildMemberAdd.js @@ -33,4 +33,12 @@ module.exports = (bot, member) => { ); 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/package-lock.json b/package-lock.json index e66f31a..b01e7d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,9 +29,19 @@ } }, "discord.js-lavalink": { - "version": "github:mrjacz/discord.js-lavalink#1ed9dfb75a5753519c4ed2f1d8a32a2e349d7c5d", + "version": "github:mrjacz/discord.js-lavalink#e82983ac398ab3aaf7b1a9d65dc0ccd7a06eacd7", "requires": { - "ws": "4.1.0" + "ws": "5.0.0" + }, + "dependencies": { + "ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.0.0.tgz", + "integrity": "sha512-XXG4S0b771C68AeTHebBsJJBZMguxj7Em+D657RViuj6ppRd3tfuOhIK8eGwZGNb76C8MjQfCTfH2NN50rJN4w==", + "requires": { + "async-limiter": "1.0.0" + } + } } }, "long": { diff --git a/package.json b/package.json index 3660393..dd8cc47 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "", "main": "bot.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "node test.js" }, "author": "Alee, Justin, and Trey", "license": "GPL-3.0", @@ -0,0 +1,72 @@ +const Discord = require('discord.js'); +const bot = new Discord.Client(); +const fs = require('fs'); + +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') }; +cmdLoader(); + +async function cmdLoader() { + const categories = await fs.readdirSync('./commands'); + console.log(`Loading ${categories.length} categories(s) into memory\n`); + categories.forEach(x => { + loadGroup(x); + }); +} +async function loadGroup(name) { + const files = await fs.readdirSync(`./commands/${name}`); + + console.log(`Loading the category '${name}' into memory with a total of ${files.length} command(s)`); + + bot.commands.set(name, new Map()); + bot.aliases.set(name, new Map()); + + const commands = []; + files.forEach(x => { + loadCmd(name, x); + commands.push(x.split('.')[0]); + }); + + bot.categories.set(name, commands); + console.log(`The category ${name} has been loaded.\n`); +} + +async function loadCmd(category, cmd) { + try { + console.log(`Loading the Command ${cmd.split('.')[0]}`); + const command = require(`./commands/${category}/${cmd}`); + bot.commands.get(category).set(command.help.name, command); + command.conf.aliases.forEach(alias => { + console.log(`Loading the alias ${alias} for the command ${command.help.name}`); + bot.aliases.get(category).set(alias, command.help.name); + }); + } + catch (err) { + console.log(`An error has occured trying to load the command '${cmd.split('.')[0]}'`); + console.log(err.stack); + } +} + + +fs.readdir('./events', (err, files) => { + if (err) console.error(err); + console.log(`Attempting to load a total of ${files.length} events into the memory.`); + files.forEach(file => { + try { + const eventName = file.split('.')[0]; + const event = require(`./events/${file}`); + console.log(`Attempting to load the event "${eventName}".`); + bot.on(eventName, event.bind(null, bot)); + delete require.cache[require.resolve(`./events/${file}`)]; + } + catch (err) { + console.log('An error has occured trying to load a event. Here is the error.'); + console.log(err.stack); + } + }); + console.log('Event Loading complete!'); + console.log('\n'); +}); |
