From 14ad6e923ca71674f7a37b04b3a36bc1030e9d93 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 31 Mar 2018 21:50:28 -0400 Subject: more stuff --- plugins/economy.js | 40 +++++++++++++++++++++++++++++++++++ plugins/music.js | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ plugins/settings.js | 54 +++++++++++++++++++++++++++++++++++++++++++++++ plugins/whitelist.js | 28 +++++++++++++++++++++++++ 4 files changed, 181 insertions(+) create mode 100644 plugins/economy.js create mode 100644 plugins/music.js create mode 100644 plugins/settings.js create mode 100644 plugins/whitelist.js (limited to 'plugins') diff --git a/plugins/economy.js b/plugins/economy.js new file mode 100644 index 0000000..3658ce8 --- /dev/null +++ b/plugins/economy.js @@ -0,0 +1,40 @@ +/** ************************************** + * + * Economy: Plugin for PokeBot that enables economy features. + * Copyright (C) 2018 TheEdge, jtsshieh, Alee + * + * Licensed under the Open Software License version 3.0 + * + * *************************************/ + +const db = require('quick.db'); +exports.get = async (userid) => { + const amount = await db.fetch(`money_${userid}`); + if (amount) { + return amount; + } + else { + await db.set(`money_${userid}`, 0); + return await db.fetch(`money_${userid}`); + } +}; + +exports.add = async (userid, money) => { + const amount = await db.fetch(`money_${userid}`); + if (amount) { + await db.set(`money_${userid}`, amount + money); + } + else { + await db.set(`money_${userid}`, money); + } +}; + +exports.subtract = async (userid, money) => { + const amount = await db.fetch(`money_${userid}`); + if (amount) { + await db.set(`money_${userid}`, amount - money); + } + else { + await db.set(`money_${userid}`, 0 - money); + } +}; diff --git a/plugins/music.js b/plugins/music.js new file mode 100644 index 0000000..2dbabda --- /dev/null +++ b/plugins/music.js @@ -0,0 +1,59 @@ +/** ************************************** + * + * Music: Plugin for PokeBot that interacts with the Lavalink API. + * Copyright (C) 2018 TheEdge, jtsshieh, Alee + * + * Licensed under the Open Software License version 3.0 + * + * *************************************/ + +exports.resolveTrack = async (term, sc) => { + const fetch = require('snekfetch'); + let track = await fetch.get('http://localhost:2344/loadtracks?identifier=' + term, { headers: { Authorization: 'iamaverysecurepassword' } }); + if (!track.body[0]) { + const search = 'http://localhost:2344/loadtracks?identifier=' + (sc ? 'scsearch:' : 'ytsearch:') + term; + track = await fetch.get(search, { headers: { Authorization: 'iamaverysecurepassword' } }); + } + return track.body[0]; +}; + +exports.play = async (bot, msg, track) => { + const player = await bot.player.join({ + d: { + guild_id: msg.guild.id, + channel_id: msg.member.voiceChannelID, + }, + host: 'localhost', + }); + if (!bot.queue.has(msg.guild.id)) { + bot.queue.set(msg.guild.id, []); + bot.queue.get(msg.guild.id).push(track); + player.play(bot.queue.get(msg.guild.id).shift()); + player.on('end', () => { + if (bot.queue.get(msg.guild.id)[0]) { + player.play(bot.queue.get(msg.guild.id).shift()); + } + else { + bot.player.leave(msg.guild.id); + } + }); + } + else { + bot.queue.get(msg.guild.id).push(track); + } +}; + +exports.skip = async (bot, msg) => { + const player = await bot.player.join({ + guild: msg.guild.id, + channel: msg.member.voiceChannelID, + host: 'localhost', + }); + if (bot.queue.has(msg.guild.id)) { + player.stop(); + player.emit('end'); + } + else { + return msg.channel.send('There is nothing playing.'); + } +}; diff --git a/plugins/settings.js b/plugins/settings.js new file mode 100644 index 0000000..bfa15d5 --- /dev/null +++ b/plugins/settings.js @@ -0,0 +1,54 @@ +/** ************************************** + * + * Settings: Plugin for PokeBot that enables settings features. + * Copyright (C) 2018 TheEdge, jtsshieh, Alee + * + * Licensed under the Open Software License version 3.0 + * + * *************************************/ + +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/plugins/whitelist.js b/plugins/whitelist.js new file mode 100644 index 0000000..41b4398 --- /dev/null +++ b/plugins/whitelist.js @@ -0,0 +1,28 @@ +/** ************************************** + * + * Whittelist: Plugin for PokeBot that let's the owners whitelist servers. + * Copyright (C) 2018 TheEdge, jtsshieh, Alee + * + * Licensed under the Open Software License version 3.0 + * + * *************************************/ + +const db = require('quick.db'); +exports.whitelist = async (guildID) => { + await db.set(`whitelist_${guildID}`, true); +}; + +exports.unwhitelist = async (guildID) => { + await db.set(`whitelist_${guildID}`, false); +}; + +exports.isWhitelist = async (guildID) => { + const value = await db.fetch(`whitelist_${guildID}`); + if (value) { + return value; + } + else { + await db.set(`whitelist_${guildID}`, false); + return await db.fetch(`whitelist_${guildID}`); + } +}; -- cgit v1.2.3 From b41df418dcaa114a173b0eec234b4b71f91b7318 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 5 Apr 2018 20:18:43 -0400 Subject: gyms system --- bot.js | 6 +++- commands/Pokemon/claim.js | 87 ++++++++++++++++++++++------------------------- plugins/gyms.js | 34 ++++++++++++++++++ 3 files changed, 80 insertions(+), 47 deletions(-) create mode 100644 plugins/gyms.js (limited to 'plugins') 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*'; +}; -- cgit v1.2.3 From 0e5738a216d7eceb7655039d5320a922aec270e2 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 5 Apr 2018 20:26:21 -0400 Subject: bugs --- plugins/gyms.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'plugins') diff --git a/plugins/gyms.js b/plugins/gyms.js index d4b1afe..3f1ce29 100644 --- a/plugins/gyms.js +++ b/plugins/gyms.js @@ -30,5 +30,5 @@ exports.getGymString = (bot, member) => { }; exports.isOwned = (title) => { - return title != 'Current Owner: *none*'; + return title == 'Current Owner: *none*'; }; -- cgit v1.2.3 From addf70683d681cd357133f93218b7a9b7a99fbe3 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 5 Apr 2018 20:31:07 -0400 Subject: bugs --- commands/Pokemon/claim.js | 2 +- plugins/gyms.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'plugins') diff --git a/commands/Pokemon/claim.js b/commands/Pokemon/claim.js index 00a9188..f3d836e 100644 --- a/commands/Pokemon/claim.js +++ b/commands/Pokemon/claim.js @@ -13,7 +13,7 @@ exports.run = async (bot, msg) => { if (!msg.channel.name.startsWith('gym-')) return msg.reply('Go into one of the gym channels and try again.'); - if (bot.plugins.gyms.isOwned(msg.channel.topic)) { + if (!bot.plugins.gyms.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'); diff --git a/plugins/gyms.js b/plugins/gyms.js index 3f1ce29..d4b1afe 100644 --- a/plugins/gyms.js +++ b/plugins/gyms.js @@ -30,5 +30,5 @@ exports.getGymString = (bot, member) => { }; exports.isOwned = (title) => { - return title == 'Current Owner: *none*'; + return title != 'Current Owner: *none*'; }; -- cgit v1.2.3