From dc602bfa035d31fb1e00621d2525b2f34c80ce72 Mon Sep 17 00:00:00 2001 From: Alee Date: Wed, 7 Mar 2018 12:02:22 -0500 Subject: Added when a member joins it DMs him --- events/guildMemberAdd.js | 9 +++++++++ package-lock.json | 14 ++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/events/guildMemberAdd.js b/events/guildMemberAdd.js index 2c3d21f..15f1b0f 100644 --- a/events/guildMemberAdd.js +++ b/events/guildMemberAdd.js @@ -33,4 +33,13 @@ 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..."; + const { RichEmbed } = require('discord.js'); + message.author.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": { -- cgit v1.2.3 From e52c90b20ff84b38bc3bbb83651a9de810b7c818 Mon Sep 17 00:00:00 2001 From: Alee Date: Wed, 7 Mar 2018 12:50:29 -0500 Subject: Fixes --- events/guildMemberAdd.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/events/guildMemberAdd.js b/events/guildMemberAdd.js index 15f1b0f..a960d0b 100644 --- a/events/guildMemberAdd.js +++ b/events/guildMemberAdd.js @@ -33,10 +33,10 @@ 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..."; const { RichEmbed } = require('discord.js'); - message.author.send( + member.user.send( new RichEmbed() .setColor(0x00ae86) .setTitle(`Pokebot`) -- cgit v1.2.3 From 9d35ad9327333304002c591ca7eeb18d293a32ee Mon Sep 17 00:00:00 2001 From: pokesudenk Date: Wed, 7 Mar 2018 19:06:43 -0500 Subject: new plugin --- commands/Pokemon/forcedrop.js | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 commands/Pokemon/forcedrop.js diff --git a/commands/Pokemon/forcedrop.js b/commands/Pokemon/forcedrop.js new file mode 100644 index 0000000..e9b825d --- /dev/null +++ b/commands/Pokemon/forcedrop.js @@ -0,0 +1,44 @@ +/** ************************************** + * + * 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 . + * + * *************************************/ + +exports.run = async (bot, msg, args) => { + 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.', + }; + \ No newline at end of file -- cgit v1.2.3 From aeef1cca7844ab3166008e24befe745ee3f562c8 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 7 Mar 2018 20:14:59 -0500 Subject: prettify --- commands/Pokemon/forcedrop.js | 47 +++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/commands/Pokemon/forcedrop.js b/commands/Pokemon/forcedrop.js index e9b825d..1c2131f 100644 --- a/commands/Pokemon/forcedrop.js +++ b/commands/Pokemon/forcedrop.js @@ -18,27 +18,26 @@ * * *************************************/ -exports.run = async (bot, msg, args) => { - 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.', - }; - \ No newline at end of file +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.', +}; -- cgit v1.2.3 From 9b4803e67d64681445d7e0fdda182e3050a569f7 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 7 Mar 2018 21:19:54 -0500 Subject: fixes --- events/guildMemberAdd.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/events/guildMemberAdd.js b/events/guildMemberAdd.js index a960d0b..f324e73 100644 --- a/events/guildMemberAdd.js +++ b/events/guildMemberAdd.js @@ -34,12 +34,11 @@ 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..."; - const { RichEmbed } = require('discord.js'); + const DMMember = 'Hello, Alee is still working on this feature...'; member.user.send( new RichEmbed() - .setColor(0x00ae86) - .setTitle(`Pokebot`) - .setDescription(DMMember) + .setColor(0x00ae86) + .setTitle('Pokebot') + .setDescription(DMMember) ); }; -- cgit v1.2.3 From f6e20b3de721262301342d824af3bd1b25b8d79f Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 7 Mar 2018 21:27:00 -0500 Subject: lint me --- commands/Pokemon/join.js | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) 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; + } } }; -- cgit v1.2.3 From acd851a680e9df85d3d6fffc03e68b870e95f475 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 7 Mar 2018 21:32:37 -0500 Subject: no typos in the licence or anything like that :eyes: --- LICENSE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.md b/LICENSE.md index 5dc6b42..9a5549b 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -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. -- cgit v1.2.3 From 255d07c718f5fab9ec28741abf4cc41fc2b52b13 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 7 Mar 2018 21:35:39 -0500 Subject: getting ready for ci --- package.json | 2 +- test.js | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 test.js 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", diff --git a/test.js b/test.js new file mode 100644 index 0000000..69b8e71 --- /dev/null +++ b/test.js @@ -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'); +}); -- cgit v1.2.3 From 33e18027cd47eaca9ba1f092edc34b4304ef2b58 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 7 Mar 2018 21:46:51 -0500 Subject: trying travis --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .travis.yml 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" -- cgit v1.2.3 From 0869dfdadc30d61041348dfcdc2005e7273623dc Mon Sep 17 00:00:00 2001 From: jtsshieh Date: Wed, 7 Mar 2018 21:48:34 -0500 Subject: Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2290849..520cc8b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ [![Discord](https://img.shields.io/discord/417088992329334792.svg?colorB=7289DA&label=discord&style=flat-square)](https://discord.gg/YqEUBGr) [![Github commits (since latest release)](https://img.shields.io/github/commits-since/PokeWorld/PokeBot/latest.svg?style=flat-square)]() +[![Build Status](https://travis-ci.org/PokeWorld/PokeBot.svg?branch=master)](https://travis-ci.org/PokeWorld/PokeBot) # Pokebot -- cgit v1.2.3 From e214e6e6f17294acc88e80d57cd90a878e71c5e6 Mon Sep 17 00:00:00 2001 From: pokesudenk Date: Fri, 9 Mar 2018 20:29:20 -0500 Subject: timeout plugin whee --- commands/Moderation/timeout.js | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 commands/Moderation/timeout.js 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 . + * + * *************************************/ + +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 -- cgit v1.2.3