aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bot.js6
-rw-r--r--commands/Pokemon/claim.js87
-rw-r--r--plugins/gyms.js34
3 files changed, 80 insertions, 47 deletions
diff --git a/bot.js b/bot.js
index c22345d..4962977 100644
--- a/bot.js
+++ b/bot.js
@@ -9,7 +9,11 @@ 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'), settings : require('./plugins/settings.js'), whitelist: require('./plugins/whitelist.js')};
+bot.plugins = { music : require('./plugins/music.js') ,
+ economy : require('./plugins/Economy.js'),
+ settings : require('./plugins/settings.js'),
+ whitelist: require('./plugins/whitelist.js'),
+ gyms : require('./plugins/gyms.js')};
cmdLoader();
bot.Raven = require('raven');
diff --git a/commands/Pokemon/claim.js b/commands/Pokemon/claim.js
index 9bba3ec..40edf49 100644
--- a/commands/Pokemon/claim.js
+++ b/commands/Pokemon/claim.js
@@ -10,56 +10,51 @@
exports.run = async (bot, msg) => {
const isWhitelist = await bot.plugins.whitelist.isWhitelist(msg.guild.id);
if (!isWhitelist) return msg.reply ('This is a Whiltelisted command. Only whitelisted servers can use this 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*') {
- let team;
- if (msg.member.roles.find('name', 'Skull')) team = 'Skull';
- if (msg.member.roles.find('name', 'Flare')) team = 'Flare';
+
+ if (bot.plugins.isOwned(msg.channel.topic)) {
+ const team = bot.plugins.gyms.getTeam(msg.member);
if (!team) return msg.reply('You have to join a team before you can claim a gym.');
msg.reply('Alright, you have claimed this gym as yours! Be ready to battle anyone who approaches you');
- msg.channel.setTopic('Current Owner: ' + msg.author.id + '/' + msg.author.tag + '/' + team);
- }
- else {
- let team;
- if (msg.member.roles.find('name', 'Skull')) team = 'Skull';
- if (msg.member.roles.find('name', 'Flare')) team = 'Flare';
- if (!team) return msg.reply('You have to join a team before you can claim a gym.');
- const owner = msg.channel.topic.slice(15).substring(0, 18);
- if (msg.guild.members.find('id', owner).roles.find('name', team)) return msg.reply('Don\'t try battling your own team. They won\'t like you.');
- if (bot.gyms.get(msg.channel.id) != null) return msg.reply('Nope, someone is already battling the gym.');
- msg.channel.send('<@' + owner + '>, come here as ' + msg.member.displayName + ' wants to battle you.');
- const func = async mess => {
- if (mess.channel != msg.channel) return;
- let field = mess.embeds[0];
- if (!field) return;
- field = field.description;
- if (!field) return;
- field = field.split('\n')[0];
- if (!field) return;
- field = field.split(' ')[0];
- if (field != undefined) {
- const user = msg.guild.members.find(member => member.user.username === field);
- if (user != undefined) {
- if (user.id == owner) {
- await msg.channel.send('The owner has not been defeated!');
- bot.gyms.set(msg.channel.id, null);
- bot.removeListener('message', func);
- }
- if (user.id == msg.author.id) {
- await msg.channel.send('The owner has been defeated! Transferring gym!');
- let recipientTeam;
- if (msg.member.roles.find('name', 'Skull')) recipientTeam = 'Skull';
- if (msg.member.roles.find('name', 'Flare')) recipientTeam = 'Flare';
- await msg.channel.setTopic('Current Owner: ' + msg.member.id + '/' + msg.author.tag + '/' + recipientTeam);
- bot.gyms.set(msg.channel.id, null);
- bot.removeListener('message', func);
- }
- }
- }
- };
- bot.gyms.set(msg.channel.id, func);
- bot.on('message', func);
+ return msg.channel.setTopic(bot.plugins.gyms.getGymString(bot, msg.member));
}
+
+ const team = bot.plugins.gyms.getTeam(msg.member);
+ if (!team) return msg.reply('You have to join a team before you can claim a gym.');
+
+ const owner = bot.plguins.gyms.getOwnerId(msg.channel.topic);
+ if (msg.guild.members.find('id', owner).roles.find('name', team)) return msg.reply('Don\'t try battling your own team. They won\'t like you.');
+
+ if (bot.gyms.get(msg.channel.id) != null) return msg.reply('Nope, someone is already battling the gym.');
+
+ msg.channel.send('<@' + owner + '>, come here as ' + msg.member.displayName + ' wants to battle you.');
+
+ const func = async mess => {
+ if (mess.channel != msg.channel) return;
+ if (!mess.embeds[0] &&
+ !mess.embeds[0].description &&
+ !mess.embeds[0].description.split('\n')[0] &&
+ !mess.embeds[0].description.split('\n')[0].split(' ')[0]
+ ) return;
+
+ const field = mess.embeds[0].description.split('\n')[0].split(' ')[0];
+ const user = msg.guild.members.find(member => member.user.username === field);
+ if (!user) return;
+ if (user.id == owner) {
+ await msg.channel.send('The owner has not been defeated!');
+ }
+ else if (user.id == msg.author.id) {
+ await msg.channel.send('The owner has been defeated! Transferring gym!');
+ bot.gyms.getTeam(mess.member);
+ await msg.channel.setTopic(bot.plugins.gyms.getGymString(bot, mess.member));
+ }
+ else { return; }
+ bot.gyms.set(msg.channel.id, null);
+ bot.removeListener('message', func);
+ };
+ bot.gyms.set(msg.channel.id, func);
+ bot.on('message', func);
};
exports.conf = {
diff --git a/plugins/gyms.js b/plugins/gyms.js
new file mode 100644
index 0000000..d4b1afe
--- /dev/null
+++ b/plugins/gyms.js
@@ -0,0 +1,34 @@
+/** **************************************
+ *
+ * Gyms: Plugin for PokeBot that enables gym features.
+ * Copyright (C) 2018 TheEdge, jtsshieh, Alee
+ *
+ * Licensed under the Open Software License version 3.0
+ *
+ * *************************************/
+
+exports.isTeam = (member) => {
+ let team;
+ if (member.roles.find('name', 'Skull')) team = 'Skull';
+ if (member.roles.find('name', 'Flare')) team = 'Flare';
+ return team ? true : false;
+};
+
+exports.getTeam = (member) => {
+ let team;
+ if (member.roles.find('name', 'Skull')) team = 'Skull';
+ if (member.roles.find('name', 'Flare')) team = 'Flare';
+ return team;
+};
+
+exports.getOwnerId = (title) => {
+ return title.slice(15).substring(0, 18);
+};
+
+exports.getGymString = (bot, member) => {
+ return 'Current Owner: ' + member.id + '/' + member.user.tag + '/' + bot.plugins.gyms.getTeam(member);
+};
+
+exports.isOwned = (title) => {
+ return title != 'Current Owner: *none*';
+};