diff --git a/.classpath b/.classpath
index 7159d62..e5e8a9b 100644
--- a/.classpath
+++ b/.classpath
@@ -1,7 +1,11 @@
-
+
+
+
+
+
@@ -20,5 +24,7 @@
+
+
diff --git a/assets/config.csv b/assets/config.csv
index 08c68af..ec05d59 100644
--- a/assets/config.csv
+++ b/assets/config.csv
@@ -37,9 +37,12 @@
"Localized Commands","kittyrole",""
"Localized Commands","leaderboard",""
"Localized Commands","map",""
+"Localized Commands","mod",""
+"Localized Commands","music",""
"Localized Commands","perish, thenperish",""
"Localized Commands","ping",""
"Localized Commands","poll",""
+"Localized Commands","raffle",""
"Localized Commands","raffleend",""
"Localized Commands","rafflejoin",""
"Localized Commands","rafflespin",""
@@ -189,16 +192,17 @@
"Localized Strings","MapSeed","Seed"
"Localized Strings","MapVersion","Using mapgen v0.1"
"Localized Strings","MapWidth",""
+"Localized Strings","MusicInfo",""
"Localized Strings","PerishInfo","Adds a red, 'a n g e r y' overlay to your icon or the icon of a friend you mentioned"
"Localized Strings","PingInfo","Will respond with Pong!"
"Localized Strings","PingResponse","Pong!"
"Localized Strings","PollManageInfo","'start' will start a new poll with the query of the line you put after, 'choice' will add a choice to the poll, 'stop' will end the poll"
"Localized Strings","PollResultsInfo","Will show current results of a poll and percentages of votes per choice"
-"Localized Strings","PollResultsResponse","%s people voted for %s `%s` with `%s%` !n"
+"Localized Strings","PollResultsResponse","%s people voted for `%s` with `%s%%` "
"Localized Strings","PollShowChoices","And the choices are:n"
"Localized Strings","PollShowInfo","Will show the current poll running"
"Localized Strings","PollShowNoPoll","There is no poll running!"
-"Localized Strings","PollShowPoll","The current poll is `%s`n"
+"Localized Strings","PollShowPoll","The current poll is `%s`"
"Localized Strings","PollVoteAlreadyVoted","You already voted"
"Localized Strings","PollVoteInfo","Vote in a poll with the choice number, won't work if no poll is running, you can't change your vote once you have cast it! Be careful!"
"Localized Strings","PollVoteNoPoll","There is no poll running!"
@@ -293,9 +297,12 @@
"Command Enabler","kittyrole","1"
"Command Enabler","leaderboard","1"
"Command Enabler","map","1"
+"Command Enabler","mod","1"
+"Command Enabler","music","1"
"Command Enabler","perish, thenperish","1"
"Command Enabler","ping","1"
"Command Enabler","poll","1"
+"Command Enabler","raffle","1"
"Command Enabler","raffleend","1"
"Command Enabler","rafflejoin","1"
"Command Enabler","rafflespin","1"
diff --git a/lib/google-api-services-youtube-v3-rev212-1.25.0.jar b/lib/google-api-services-youtube-v3-rev212-1.25.0.jar
new file mode 100644
index 0000000..c267f90
Binary files /dev/null and b/lib/google-api-services-youtube-v3-rev212-1.25.0.jar differ
diff --git a/lib/lavaplayer-1.3.19.jar b/lib/lavaplayer-1.3.19.jar
new file mode 100644
index 0000000..472c468
Binary files /dev/null and b/lib/lavaplayer-1.3.19.jar differ
diff --git a/src/commands/characters/CommandCharacterMain.java b/src/commands/characters/CommandCharacterMain.java
index 5301bbb..6066ab1 100644
--- a/src/commands/characters/CommandCharacterMain.java
+++ b/src/commands/characters/CommandCharacterMain.java
@@ -22,12 +22,9 @@ public class CommandCharacterMain extends Command
@Override
public String getHelpText() { return LocStrings.stub("CharacterInfo"); }
-
-
-
@Override
public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
{
- framework.run(guild, channel, user, input.args).Call(res);
+ framework.run(guild, channel, user, input).Call(res);
}
}
\ No newline at end of file
diff --git a/src/commands/characters/SubCommandCreate.java b/src/commands/characters/SubCommandCreate.java
index 605b4c5..bbe5930 100644
--- a/src/commands/characters/SubCommandCreate.java
+++ b/src/commands/characters/SubCommandCreate.java
@@ -4,16 +4,21 @@ import core.CharacterManager;
import core.LocStrings;
import core.SubCommand;
import core.SubCommandFormattable;
-import dataStructures.*;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
public class SubCommandCreate extends SubCommand
{
public SubCommandCreate(KittyRole level, KittyRating rating) { super(level, rating); }
@Override
- public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
- String [] info = input.split(",");
+ String [] info = input.args.split(",");
if(info.length < 3)
{
return new SubCommandFormattable (LocStrings.stub("CharacterCreateNullInfo"));
diff --git a/src/commands/characters/SubCommandEditBio.java b/src/commands/characters/SubCommandEditBio.java
index 8236a6d..dc35b07 100644
--- a/src/commands/characters/SubCommandEditBio.java
+++ b/src/commands/characters/SubCommandEditBio.java
@@ -10,26 +10,27 @@ import dataStructures.KittyGuild;
import dataStructures.KittyRating;
import dataStructures.KittyRole;
import dataStructures.KittyUser;
+import dataStructures.UserInput;
public class SubCommandEditBio extends SubCommand
{
public SubCommandEditBio(KittyRole level, KittyRating rating) { super(level, rating); }
@Override
- public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
try
{
- Long.parseLong(input.split(" ")[0]);
+ Long.parseLong(input.args.split(" ")[0]);
}
catch(Exception e)
{
return new SubCommandFormattable (LocStrings.stub("CharacterEditBioNotValid"));
}
- KittyCharacter character = CharacterManager.instance.searchCharacter(input.split(" ")[0]).get(0);
+ KittyCharacter character = CharacterManager.instance.searchCharacter(input.args.split(" ")[0]).get(0);
if(character.getOwner().equals(user))
{
- CharacterManager.instance.editBio(character, input.substring(input.indexOf(' ')));
+ CharacterManager.instance.editBio(character, input.args.substring(input.args.indexOf(' ')));
return new SubCommandFormattable (LocStrings.stub("CharacterEditBioSuccess"));
}
else
diff --git a/src/commands/characters/SubCommandEditName.java b/src/commands/characters/SubCommandEditName.java
index 56c9cef..a339aa9 100644
--- a/src/commands/characters/SubCommandEditName.java
+++ b/src/commands/characters/SubCommandEditName.java
@@ -10,26 +10,27 @@ import dataStructures.KittyGuild;
import dataStructures.KittyRating;
import dataStructures.KittyRole;
import dataStructures.KittyUser;
+import dataStructures.UserInput;
public class SubCommandEditName extends SubCommand
{
public SubCommandEditName(KittyRole level, KittyRating rating) { super(level, rating); }
@Override
- public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
try
{
- Long.parseLong(input.split(" ")[0]);
+ Long.parseLong(input.args.split(" ")[0]);
}
catch(Exception e)
{
return new SubCommandFormattable (LocStrings.stub("CharacterEditNameNotValid"));
}
- KittyCharacter character = CharacterManager.instance.searchCharacter(input.split(" ")[0]).get(0);
+ KittyCharacter character = CharacterManager.instance.searchCharacter(input.args.split(" ")[0]).get(0);
if(character.getOwner().equals(user))
{
- CharacterManager.instance.editName(character, input.substring(input.indexOf(' ')));
+ CharacterManager.instance.editName(character, input.args.substring(input.args.indexOf(' ')));
return new SubCommandFormattable (LocStrings.stub("CharacterEditNameSuccess"));
}
else
diff --git a/src/commands/characters/SubCommandEditURL.java b/src/commands/characters/SubCommandEditURL.java
index 411d3cc..1d4b9a6 100644
--- a/src/commands/characters/SubCommandEditURL.java
+++ b/src/commands/characters/SubCommandEditURL.java
@@ -10,26 +10,27 @@ import dataStructures.KittyGuild;
import dataStructures.KittyRating;
import dataStructures.KittyRole;
import dataStructures.KittyUser;
+import dataStructures.UserInput;
public class SubCommandEditURL extends SubCommand
{
public SubCommandEditURL(KittyRole level, KittyRating rating) { super(level, rating); }
@Override
- public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
try
{
- Long.parseLong(input.split(" ")[0]);
+ Long.parseLong(input.args.split(" ")[0]);
}
catch(Exception e)
{
return new SubCommandFormattable (LocStrings.stub("CharacterEditURLNotValid"));
}
- KittyCharacter character = CharacterManager.instance.searchCharacter(input.split(" ")[0]).get(0);
+ KittyCharacter character = CharacterManager.instance.searchCharacter(input.args.split(" ")[0]).get(0);
if(character.getOwner().equals(user))
{
- CharacterManager.instance.editRefImage(character, input.substring(input.indexOf(' ')));
+ CharacterManager.instance.editRefImage(character, input.args.substring(input.args.indexOf(' ')));
return new SubCommandFormattable (LocStrings.stub("CharacterEditURLSuccess"));
}
else
diff --git a/src/commands/characters/SubCommandSearch.java b/src/commands/characters/SubCommandSearch.java
index 74b72cd..5a7c48e 100644
--- a/src/commands/characters/SubCommandSearch.java
+++ b/src/commands/characters/SubCommandSearch.java
@@ -12,15 +12,16 @@ import dataStructures.KittyGuild;
import dataStructures.KittyRating;
import dataStructures.KittyRole;
import dataStructures.KittyUser;
+import dataStructures.UserInput;
public class SubCommandSearch extends SubCommand
{
public SubCommandSearch(KittyRole level, KittyRating rating) { super(level, rating); }
@Override
- public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
- ArrayList characters = CharacterManager.instance.searchCharacter(input);
+ ArrayList characters = CharacterManager.instance.searchCharacter(input.args);
if(characters.size() < 1)
{
return new SubCommandFormattable (LocStrings.stub("CharacterSearchNoCharacterFound"));
diff --git a/src/commands/general/CommandBlurry.java b/src/commands/general/CommandBlurry.java
index 145510e..53e9bf8 100644
--- a/src/commands/general/CommandBlurry.java
+++ b/src/commands/general/CommandBlurry.java
@@ -20,6 +20,8 @@ public class CommandBlurry extends Command
public String getHelpText() { return LocStrings.stub("BlurryInfo"); };
private static Long num = 0l;
+ private static float [] weights = {.00390625f, .0156625f, .0234475f, .0156625f, .00390625f};
+
@Override
public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
@@ -53,7 +55,7 @@ public class CommandBlurry extends Command
return;
}
preProcessed = new File(filename);
- applySnap(ImageIO.read(preProcessed), name);
+ applyBlur(ImageIO.read(preProcessed), name);
}
catch (IOException e)
{
@@ -67,51 +69,77 @@ public class CommandBlurry extends Command
ImageUtils.blockingFileDelete(postProcessed);
}
- private static void applySnap(BufferedImage image, String name) throws IOException
+ private static void applyBlur(BufferedImage image, String name) throws IOException
{
BufferedImage blurred = ImageUtils.copyImage(image);
// Iterate over each column left to right and touch up each pixel
- for(int i = 0; i < 50; ++i)
+ for(int i = 0; i < 10; i++)
{
- for(int x = 1; x < image.getWidth() - 1; ++x)
+ for(int x = 0; x < image.getWidth(); ++x)
{
- for(int y = 1; y < image.getHeight() - 1; ++y)
+ for(int y = 0; y < image.getHeight(); ++y)
{
blurred.setRGB(x, y, getColorAvg(image, x, y).getRGB());
}
}
- image = ImageUtils.copyImage(blurred);
+ image = blurred;
}
-
+
File outputfile = new File(name);
ImageIO.write(blurred, "png", outputfile);
}
private static Color getColorAvg(BufferedImage image, int x, int y)
{
- Color center = new Color(image.getRGB(x, y), true);
- Color one = new Color(image.getRGB(x - 1, y), true);
- Color two = new Color(image.getRGB(x - 1, y - 1), true);
- Color three = new Color(image.getRGB(x, y - 1), true);
- Color four = new Color(image.getRGB(x + 1, y - 1), true);
- Color five = new Color(image.getRGB(x + 1, y), true);
- Color six = new Color(image.getRGB(x + 1, y + 1), true);
- Color seven = new Color(image.getRGB(x, y + 1), true);
- Color eight = new Color(image.getRGB(x -1, y + 1), true);
+ Color current;
+ float r = 0;
+ float g = 0;
+ float b = 0;
- int blue = center.getBlue() + one.getBlue() + two.getBlue() + three.getBlue() + four.getBlue() + five.getBlue() + six.getBlue() + seven.getBlue() + eight.getBlue();
- int red = center.getRed() + one.getRed() + two.getRed() + three.getRed() + four.getRed() + five.getRed() + six.getRed() + seven.getRed() + eight.getRed();
- int green = center.getGreen() + one.getGreen() + two.getGreen() + three.getGreen() + four.getGreen() + five.getGreen() + six.getGreen() + seven.getGreen() + eight.getGreen();
- int alpha = center.getAlpha() + one.getAlpha() + two.getAlpha() + three.getAlpha() + four.getAlpha() + five.getAlpha() + six.getAlpha() + seven.getAlpha() + eight.getAlpha();
+ for(int xCor = -2; xCor <= 2; xCor++)
+ {
+ for(int yCor = -2; yCor <= 2; yCor++)
+ {
+ int curX = clamp(x + xCor, 0, image.getWidth() - 1);
+ int curY = clamp(y + yCor, 0, image.getHeight() - 1);
+
+
+ current = new Color(image.getRGB(curX, curY));
+
+ r += getGaus(current.getRed(), xCor, yCor);
+ g += getGaus(current.getGreen(), xCor, yCor);
+ b += getGaus(current.getBlue(), xCor, yCor);
+ }
+ }
+ int red = (int)r;
+ int green = (int)g;
+ int blue = (int)b;
+ return new Color(red, green, blue);
+ }
+
+ private static int clamp(int num, int min, int max)
+ {
+ if(num >= max)
+ return max;
+ if(num < min)
+ return min;
+ return num;
+ }
+
+ private static float getGaus(int col, int x, int y)
+ {
+ x += 2;
+ y+= 2;
+ float result = weights[x];
+ if(y == 2 || y == 4)
+ result *= 4;
+ if(y==3)
+ result *= 6;
- blue /= 9;
- red /= 9;
- green /= 9;
- alpha /= 9;
+ result *= col;
- Color blur = new Color(red, green, blue, alpha);
-
- return blur;
- }
+ return result;
+ }
+
}
\ No newline at end of file
diff --git a/src/commands/general/CommandPollManage.java b/src/commands/general/CommandPollManage.java
deleted file mode 100644
index a1ecd32..0000000
--- a/src/commands/general/CommandPollManage.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package commands.general;
-
-import core.*;
-import dataStructures.KittyChannel;
-import dataStructures.KittyGuild;
-import dataStructures.KittyRating;
-import dataStructures.KittyRole;
-import dataStructures.KittyUser;
-import dataStructures.Response;
-import dataStructures.UserInput;
-
-public class CommandPollManage extends Command
-{
- public CommandPollManage(KittyRole level, KittyRating rating) { super(level, rating); }
-
- @Override
- public String getHelpText() { return LocStrings.stub("PollManageInfo"); }
-
- @Override
- public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
- {
- switch(input.args.split(" ")[0].toLowerCase())
- {
- case "start":
- res.send(guild.startPoll(input.args.substring(input.args.indexOf(' ')).trim()));
- break;
-
- case "choice":
- res.send(guild.addChoiceToPoll(input.args.substring(input.args.indexOf(' ')).trim()));
- break;
-
- case "stop":
- res.send(guild.endPoll());
- break;
-
- default:
- break;
- }
- }
-}
diff --git a/src/commands/general/CommandPollShow.java b/src/commands/general/CommandPollShow.java
deleted file mode 100644
index bb2d277..0000000
--- a/src/commands/general/CommandPollShow.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package commands.general;
-
-import core.*;
-import dataStructures.*;
-
-public class CommandPollShow extends Command
-{
- public CommandPollShow(KittyRole level, KittyRating rating) { super(level, rating); }
-
- @Override
- public String getHelpText() { return LocStrings.stub("PollShowInfo"); }
-
- @Override
- public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
- {
- if(!guild.polling)
- {
- res.send(LocStrings.stub("PollShowNoPoll"));
- return;
- }
- String poll = String.format(LocStrings.stub("PollShowPoll"), guild.poll);
- poll += LocStrings.stub("PollShowChoices");
- for(int i = 0; i < guild.choices.size(); i++)
- {
- poll += (i+1) + ": `" + guild.choices.get(i).choice + "`\n";
- }
-
- res.send(poll);
- }
-}
diff --git a/src/commands/general/CommandPollVote.java b/src/commands/general/CommandPollVote.java
deleted file mode 100644
index af37b14..0000000
--- a/src/commands/general/CommandPollVote.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package commands.general;
-
-import core.*;
-import dataStructures.*;
-
-public class CommandPollVote extends Command
-{
- public CommandPollVote(KittyRole level, KittyRating rating) { super(level, rating); }
-
- @Override
- public String getHelpText() { return LocStrings.stub("PollVoteInfo"); }
-
- @Override
- public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
- {
- if(guild.polling)
- {
- if(guild.hasVoted.contains(user.uniqueID))
- {
- res.send(LocStrings.stub("PollVoteAlreadyVoted"));
- return;
- }
- try
- {
- int voteNum = Integer.parseInt(input.args)-1;
- if(voteNum >= guild.choices.size() || voteNum < 0)
- {
- res.send(String.format(LocStrings.stub("PollVoteNotValidVote"), voteNum));
- return;
- }
-
- KittyPoll polled = guild.choices.get(voteNum);
- polled.votes++;
- guild.hasVoted.add(user.uniqueID);
- res.send(LocStrings.stub("PollVoteSuccess") + " `" + polled.choice + "`!");
- return;
- }
- catch (NumberFormatException e)
- {
- res.send(LocStrings.stub("PollVoteNotValidNumber"));
- return;
- }
- }
-
- res.send(LocStrings.stub("PollVoteNoPoll"));
- }
-}
diff --git a/src/commands/general/CommandRaffleEnd.java b/src/commands/general/CommandRaffleEnd.java
deleted file mode 100644
index bc89124..0000000
--- a/src/commands/general/CommandRaffleEnd.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package commands.general;
-
-import core.Command;
-import core.LocStrings;
-import dataStructures.KittyChannel;
-import dataStructures.KittyGuild;
-import dataStructures.KittyRating;
-import dataStructures.KittyRole;
-import dataStructures.KittyUser;
-import dataStructures.Response;
-import dataStructures.UserInput;
-
-public class CommandRaffleEnd extends Command
-{
- public CommandRaffleEnd(KittyRole level, KittyRating rating) { super(level, rating); }
-
- @Override
- public String getHelpText() { return LocStrings.stub("RaffleEndInfo"); }
-
- @Override
- public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
- {
- if(guild.endRaffle())
- {
- res.send(LocStrings.stub("RaffleEndSuccess"));
- }
- else
- {
- res.send(LocStrings.stub("RaffleEndFailure"));
- }
- }
-}
\ No newline at end of file
diff --git a/src/commands/general/CommandRaffleJoin.java b/src/commands/general/CommandRaffleJoin.java
deleted file mode 100644
index 3003a8e..0000000
--- a/src/commands/general/CommandRaffleJoin.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package commands.general;
-
-import core.Command;
-import core.LocStrings;
-import dataStructures.KittyChannel;
-import dataStructures.KittyGuild;
-import dataStructures.KittyRating;
-import dataStructures.KittyRole;
-import dataStructures.KittyUser;
-import dataStructures.Response;
-import dataStructures.UserInput;
-
-public class CommandRaffleJoin extends Command
-{
- public CommandRaffleJoin(KittyRole level, KittyRating rating) { super(level, rating); }
-
- @Override
- public String getHelpText() { return LocStrings.stub("RaffleJoinInfo"); }
-
- @Override
- public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
- {
- if(guild.joinRaffle(user))
- {
- res.send(LocStrings.stub("RaffleJoinSuccess"));
- }
- else
- {
- res.send(LocStrings.stub("RaffleJoinFailure"));
- }
- }
-}
diff --git a/src/commands/general/CommandRaffleSpin.java b/src/commands/general/CommandRaffleSpin.java
deleted file mode 100644
index ff6111d..0000000
--- a/src/commands/general/CommandRaffleSpin.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package commands.general;
-
-import core.Command;
-import core.LocStrings;
-import dataStructures.KittyChannel;
-import dataStructures.KittyGuild;
-import dataStructures.KittyRating;
-import dataStructures.KittyRole;
-import dataStructures.KittyUser;
-import dataStructures.Response;
-import dataStructures.UserInput;
-
-public class CommandRaffleSpin extends Command
-{
- public CommandRaffleSpin(KittyRole level, KittyRating rating) { super(level, rating); }
-
- @Override
- public String getHelpText() { return LocStrings.stub("RaffleSpinInfo"); }
-
- @Override
- public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
- {
- try
- {
- res.send(String.format(LocStrings.stub("RaffleSpinSuccess"), guild.chooseRaffleWinner().name));
- }
- catch(Exception e)
- {
- res.send(LocStrings.stub("RaffleSpinFailure"));
- }
- }
-}
\ No newline at end of file
diff --git a/src/commands/general/CommandRaffleStart.java b/src/commands/general/CommandRaffleStart.java
deleted file mode 100644
index 0c72142..0000000
--- a/src/commands/general/CommandRaffleStart.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package commands.general;
-
-import core.Command;
-import core.LocStrings;
-import dataStructures.KittyChannel;
-import dataStructures.KittyGuild;
-import dataStructures.KittyRating;
-import dataStructures.KittyRole;
-import dataStructures.KittyUser;
-import dataStructures.Response;
-import dataStructures.UserInput;
-
-public class CommandRaffleStart extends Command
-{
- public CommandRaffleStart(KittyRole level, KittyRating rating) { super(level, rating); }
-
- @Override
- public String getHelpText() { return LocStrings.stub("RaffleStartInfo"); }
-
- public int beanCost;
-
- @Override
- public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
- {
- try
- {
- beanCost = Integer.parseInt(input.args);
- }
- catch(Exception e)
- {
- beanCost = 100;
- }
-
- if(guild.startRaffle(beanCost))
- {
- res.send(String.format(LocStrings.stub("RaffleStartSuccess"), beanCost));
- }
- else
- {
- res.send(LocStrings.stub("RaffleStartFailure"));
- }
- }
-}
diff --git a/src/commands/general/CommandRoll.java b/src/commands/general/CommandRoll.java
index 30c9d31..498ebe8 100644
--- a/src/commands/general/CommandRoll.java
+++ b/src/commands/general/CommandRoll.java
@@ -1,15 +1,12 @@
package commands.general;
+import java.awt.Color;
+import java.util.Random;
import java.util.Stack;
-import core.*;
-import dataStructures.KittyChannel;
-import dataStructures.KittyGuild;
-import dataStructures.KittyRating;
-import dataStructures.KittyRole;
-import dataStructures.KittyUser;
-import dataStructures.Response;
-import dataStructures.UserInput;
+import core.Command;
+import core.LocStrings;
+import dataStructures.*;
public class CommandRoll extends Command
{
@@ -23,7 +20,15 @@ public class CommandRoll extends Command
{
try
{
- res.send(rollDice(input.args));
+ KittyEmbed embed = new KittyEmbed();
+ embed.title = user.name +"'s roll!";
+ embed.descriptionText = rollDice(input.args);
+ Random numGen = new Random(user.name.hashCode());
+ float hue = numGen.nextFloat();
+ float sat = .7f;
+ float bright = .7f;
+ embed.color = Color.getHSBColor(hue, sat, bright);
+ res.send(embed);
}
catch(Exception e)
{
@@ -35,6 +40,7 @@ public class CommandRoll extends Command
{
Stack values = new Stack();
Stack operators = new Stack();
+ String steps = "";
for(int i = 0; i < thing.length(); i ++)
{
char current = thing.charAt(i);
@@ -49,7 +55,7 @@ public class CommandRoll extends Command
operators.add(current);
else
{
- calculate(values, operators);
+ steps += "\n" + calculate(values, operators);
operators.add(current);
}
@@ -65,7 +71,7 @@ public class CommandRoll extends Command
else
{
i --;
- calculate(values, operators);
+ steps += "\n" + calculate(values, operators);
}
continue;
@@ -73,7 +79,7 @@ public class CommandRoll extends Command
if(operators.isEmpty() || operators.peek() == '(' || !hasPrecendence(operators.peek(), current))
operators.add(current);
else
- calculate(values, operators);
+ steps += "\n" + calculate(values, operators);
continue;
case ' ':
@@ -114,19 +120,22 @@ public class CommandRoll extends Command
while(operators.size() > 0)
{
- calculate(values, operators);
+ steps += "\n" + calculate(values, operators);
}
- return "" + values.pop();
+ return "Roll```" + thing + "```" + "Steps```" + steps + "```" + "Final value ```" + values.pop() +"```";
}
- private void calculate(Stack nums, Stack operators)
+
+ private String calculate(Stack nums, Stack operators)
{
int second = nums.pop();
int first = nums.pop();
+ int rolls[] = null;
int value = 0;
+ char op = operators.pop();
- switch(operators.pop())
+ switch(op)
{
case '+':
value = first + second;
@@ -141,27 +150,39 @@ public class CommandRoll extends Command
value = first / second;
break;
case 'd':
- value = roll(first, second);
+ rolls = roll(first, second);
+ for(int i= 0; i < first; i++)
+ {
+ value += rolls[i];
+ }
+
}
-
nums.add(value);
+ if(rolls == null)
+ return (first + "" + op + "" + second + "=" + value);
+ String rollValues = "";
+ for(int i= 0; i < first; i++)
+ {
+ rollValues += "\uD83C\uDFB2" + rolls[i] + " ";
+ }
+ return (first + "" + op + "" + second + "=" + value + "(" + rollValues.trim() + ")");
}
- private int roll(int first, int second)
+ private int[] roll(int first, int second)
{
- int total = 0;
int roll = 0;
int dice = first;
int sides = second;
+ int [] rolls = new int [sides];
if(dice < 1)
- return 0;
+ return new int[0];
for(int i = 0; dice > i; i ++)
{
roll = (int)(Math.random() * sides) + 1;
- total += roll;
+ rolls[i] = roll;
}
- return total;
+ return rolls;
}
private boolean hasPrecendence(char op1, char op2)
diff --git a/src/commands/guildrole/CommandGuildRoleMain.java b/src/commands/guildrole/CommandGuildRoleMain.java
index 2c5807d..010b847 100644
--- a/src/commands/guildrole/CommandGuildRoleMain.java
+++ b/src/commands/guildrole/CommandGuildRoleMain.java
@@ -19,6 +19,7 @@ public class CommandGuildRoleMain extends Command
super(level, rating);
framework.addCommand("add", new SubCommandAdd (KittyRole.General, KittyRating.Safe));
framework.addCommand("remove", new SubCommandRemove(KittyRole.General, KittyRating.Safe));
+ framework.addCommand("list", new SubCommandList(KittyRole.General, KittyRating.Safe));
framework.addCommand("allowed", new SubCommandAllowed(KittyRole.Admin, KittyRating.Safe));
framework.addCommand("unallowed", new SubCommandNotAllowed(KittyRole.Admin, KittyRating.Safe));
}
@@ -26,12 +27,9 @@ public class CommandGuildRoleMain extends Command
@Override
public String getHelpText() { return LocStrings.stub("GuildRoleInfo"); }
-
-
-
@Override
public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
{
- framework.run(guild, channel, user, input.args).Call(res);
+ framework.run(guild, channel, user, input).Call(res);
}
}
diff --git a/src/commands/guildrole/SubCommandAdd.java b/src/commands/guildrole/SubCommandAdd.java
index 37c9617..3555fe9 100644
--- a/src/commands/guildrole/SubCommandAdd.java
+++ b/src/commands/guildrole/SubCommandAdd.java
@@ -7,30 +7,38 @@ import dataStructures.KittyGuild;
import dataStructures.KittyRating;
import dataStructures.KittyRole;
import dataStructures.KittyUser;
+import dataStructures.UserInput;
public class SubCommandAdd extends SubCommand
{
public SubCommandAdd(KittyRole level, KittyRating rating) { super(level, rating); }
@Override
- public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
- String role = input.split(" ")[0];
- if(guild.roleList.contains(role))
+ String [] roles = input.args.split(",");
+ String role;
+ String formatted = "";
+ for(int i = 0; i < roles.length; i++)
{
- if(guild.control.addRole(user.discordID, role))
+ role = roles[i].trim();
+ if(guild.roleList.contains(role))
{
- return new SubCommandFormattable("ADDED RIN YOU NEED TO FIX THIS");
+ if(guild.control.addRole(user.discordID, role))
+ {
+ formatted += "Addded " + role + "!";
+ }
+ else
+ {
+ formatted += "Failed to add " + role + "!";
+ }
}
else
{
- return new SubCommandFormattable("FAILED RIN YOU NEED TO FIX THIS TOO");
+ formatted += "You're not allowed to add " + role + "!";
}
}
- else
- {
- return new SubCommandFormattable("NOT ALLOWED FIX THIS ONE TOO SNEP FACE");
- }
+ return new SubCommandFormattable(formatted);
}
}
\ No newline at end of file
diff --git a/src/commands/guildrole/SubCommandAllowed.java b/src/commands/guildrole/SubCommandAllowed.java
index 95fd093..15c7252 100644
--- a/src/commands/guildrole/SubCommandAllowed.java
+++ b/src/commands/guildrole/SubCommandAllowed.java
@@ -8,15 +8,16 @@ import dataStructures.KittyGuild;
import dataStructures.KittyRating;
import dataStructures.KittyRole;
import dataStructures.KittyUser;
+import dataStructures.UserInput;
public class SubCommandAllowed extends SubCommand
{
public SubCommandAllowed(KittyRole level, KittyRating rating) { super(level, rating); }
@Override
- public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
- String [] roles = input.split(",");
+ String [] roles = input.args.split(",");
String role;
String formatted = "";
for(int i = 0; i < roles.length; i++)
diff --git a/src/commands/guildrole/SubCommandList.java b/src/commands/guildrole/SubCommandList.java
index 5bf3163..f59c292 100644
--- a/src/commands/guildrole/SubCommandList.java
+++ b/src/commands/guildrole/SubCommandList.java
@@ -8,6 +8,7 @@ import dataStructures.KittyGuild;
import dataStructures.KittyRating;
import dataStructures.KittyRole;
import dataStructures.KittyUser;
+import dataStructures.UserInput;
public class SubCommandList extends SubCommand
{
@@ -15,7 +16,7 @@ public class SubCommandList extends SubCommand
public SubCommandList(KittyRole level, KittyRating rating) { super(level, rating);}
@Override
- public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
String roles = "";
if(guild.roleList.isEmpty())
diff --git a/src/commands/guildrole/SubCommandNotAllowed.java b/src/commands/guildrole/SubCommandNotAllowed.java
index f11ec28..8803fde 100644
--- a/src/commands/guildrole/SubCommandNotAllowed.java
+++ b/src/commands/guildrole/SubCommandNotAllowed.java
@@ -8,28 +8,36 @@ import dataStructures.KittyGuild;
import dataStructures.KittyRating;
import dataStructures.KittyRole;
import dataStructures.KittyUser;
+import dataStructures.UserInput;
public class SubCommandNotAllowed extends SubCommand
{
public SubCommandNotAllowed(KittyRole level, KittyRating rating) { super(level, rating); }
@Override
- public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
- input = input.toLowerCase();
- String [] roles = input.split(",");
+ String lowerInput = input.args.toLowerCase();
+ String [] roles = lowerInput.split(",");
+ String formatted = "";
+
+ if(roles.length < 1)
+ {
+ return new SubCommandFormattable(String.format(LocStrings.stub("GuildRoleNotAllowedNoArgs")));
+ }
+
for(String role:roles)
{
if(guild.roleList.contains(role.trim()))
{
guild.roleList.remove(role);
- return new SubCommandFormattable(LocStrings.stub("GuildRoleNotAllowedSuccess"));
+ formatted += String.format(LocStrings.stub("GuildRoleNotAllowedSuccess"), role);
}
else
{
- return new SubCommandFormattable(String.format(LocStrings.stub("GuildRoleNotAllowedFailure"), role));
+ formatted += String.format(LocStrings.stub("GuildRoleNotAllowedFailure"), role);
}
}
- return new SubCommandFormattable(String.format(LocStrings.stub("GuildRoleNotAllowedNoArgs")));
+ return new SubCommandFormattable(formatted);
}
}
\ No newline at end of file
diff --git a/src/commands/guildrole/SubCommandRemove.java b/src/commands/guildrole/SubCommandRemove.java
index ad5fd53..84555c5 100644
--- a/src/commands/guildrole/SubCommandRemove.java
+++ b/src/commands/guildrole/SubCommandRemove.java
@@ -10,9 +10,9 @@ public class SubCommandRemove extends SubCommand
public SubCommandRemove(KittyRole level, KittyRating rating) { super(level, rating); }
@Override
- public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
- String role = input.split(" ")[0];
+ String role = input.args.split(" ")[0];
String formatted = "";
if(guild.roleList.contains(role))
{
diff --git a/src/commands/mod/CommandModMain.java b/src/commands/mod/CommandModMain.java
new file mode 100644
index 0000000..8ab5e5b
--- /dev/null
+++ b/src/commands/mod/CommandModMain.java
@@ -0,0 +1,33 @@
+package commands.mod;
+
+import core.Command;
+import core.LocStrings;
+import core.SubCommandFramework;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.Response;
+import dataStructures.UserInput;
+
+public class CommandModMain extends Command
+{
+ SubCommandFramework framework = new SubCommandFramework();
+ public CommandModMain(KittyRole level, KittyRating rating)
+ {
+ super(level, rating);
+ framework.addCommand("kick", new SubCommandKick(KittyRole.Admin, KittyRating.Safe));
+ framework.addCommand("mute", new SubCommandMute(KittyRole.Admin, KittyRating.Safe));
+ framework.addCommand("ban", new SubCommandBan(KittyRole.Admin, KittyRating.Safe));
+ }
+
+ @Override
+ public String getHelpText() { return LocStrings.stub("GuildRoleInfo"); }
+
+ @Override
+ public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
+ {
+ framework.run(guild, channel, user, input).Call(res);
+ }
+}
\ No newline at end of file
diff --git a/src/commands/mod/SubCommandBan.java b/src/commands/mod/SubCommandBan.java
new file mode 100644
index 0000000..b9b61e6
--- /dev/null
+++ b/src/commands/mod/SubCommandBan.java
@@ -0,0 +1,21 @@
+package commands.mod;
+
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandBan extends SubCommand
+{
+ public SubCommandBan(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ return new SubCommandFormattable(guild.control.banMember(input.mentions[0].discordID) + " ");
+ }
+}
diff --git a/src/commands/mod/SubCommandKick.java b/src/commands/mod/SubCommandKick.java
new file mode 100644
index 0000000..96bcaa2
--- /dev/null
+++ b/src/commands/mod/SubCommandKick.java
@@ -0,0 +1,25 @@
+package commands.mod;
+
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandKick extends SubCommand
+{
+ public SubCommandKick(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ if(guild.control.kickMember(input.mentions[0].discordID))
+ {
+ return new SubCommandFormattable("Success");
+ }
+ return new SubCommandFormattable("Fail");
+ }
+}
\ No newline at end of file
diff --git a/src/commands/mod/SubCommandMute.java b/src/commands/mod/SubCommandMute.java
new file mode 100644
index 0000000..338484b
--- /dev/null
+++ b/src/commands/mod/SubCommandMute.java
@@ -0,0 +1,21 @@
+package commands.mod;
+
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandMute extends SubCommand
+{
+ public SubCommandMute(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ return new SubCommandFormattable("" + guild.control.muteMember(input.mentions[0].avatarID));
+ }
+}
diff --git a/src/commands/music/CommandMusicMain.java b/src/commands/music/CommandMusicMain.java
new file mode 100644
index 0000000..181fb21
--- /dev/null
+++ b/src/commands/music/CommandMusicMain.java
@@ -0,0 +1,26 @@
+package commands.music;
+
+import core.Command;
+import core.LocStrings;
+import core.SubCommandFramework;
+import dataStructures.*;
+
+public class CommandMusicMain extends Command
+{
+ SubCommandFramework framework = new SubCommandFramework();
+ public CommandMusicMain(KittyRole level, KittyRating rating)
+ {
+ super(level, rating);
+ framework.addCommand("join", new SubCommandJoin(KittyRole.General, KittyRating.Safe));
+ framework.addCommand("leave", new SubCommandLeave(KittyRole.General, KittyRating.Safe));
+ }
+
+ @Override
+ public String getHelpText() { return LocStrings.stub("MusicInfo"); }
+
+ @Override
+ public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
+ {
+ framework.run(guild, channel, user, input).Call(res);
+ }
+}
\ No newline at end of file
diff --git a/src/commands/music/SubCommandAddTrack.java b/src/commands/music/SubCommandAddTrack.java
new file mode 100644
index 0000000..1c19498
--- /dev/null
+++ b/src/commands/music/SubCommandAddTrack.java
@@ -0,0 +1,25 @@
+package commands.music;
+
+import com.google.api.services.youtube.YouTube;
+
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandAddTrack extends SubCommand
+{
+
+ public SubCommandAddTrack(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/src/commands/music/SubCommandJoin.java b/src/commands/music/SubCommandJoin.java
new file mode 100644
index 0000000..d6eeb8c
--- /dev/null
+++ b/src/commands/music/SubCommandJoin.java
@@ -0,0 +1,21 @@
+package commands.music;
+
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandJoin extends SubCommand
+{
+ public SubCommandJoin(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ return new SubCommandFormattable("" + guild.audio.joinChannel(input.args));
+ }
+}
diff --git a/src/commands/music/SubCommandLeave.java b/src/commands/music/SubCommandLeave.java
new file mode 100644
index 0000000..e7078aa
--- /dev/null
+++ b/src/commands/music/SubCommandLeave.java
@@ -0,0 +1,21 @@
+package commands.music;
+
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandLeave extends SubCommand
+{
+ public SubCommandLeave(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ return new SubCommandFormattable("" + guild.audio.leaveChannel());
+ }
+}
\ No newline at end of file
diff --git a/src/commands/poll/CommandPollMain.java b/src/commands/poll/CommandPollMain.java
new file mode 100644
index 0000000..fda983e
--- /dev/null
+++ b/src/commands/poll/CommandPollMain.java
@@ -0,0 +1,34 @@
+package commands.poll;
+
+import core.Command;
+import core.SubCommandFramework;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.Response;
+import dataStructures.UserInput;
+
+public class CommandPollMain extends Command
+{
+ SubCommandFramework framework = new SubCommandFramework();
+ public CommandPollMain(KittyRole level, KittyRating rating)
+ {
+ super(level, rating);
+
+ framework.addCommand("start", new SubCommandStart(KittyRole.Mod, KittyRating.Safe));
+ framework.addCommand("addoption", new SubCommandAddOption(KittyRole.Mod, KittyRating.Safe));
+ framework.addCommand("end", new SubCommandEnd(KittyRole.Mod, KittyRating.Safe));
+
+ framework.addCommand("show", new SubCommandShow(KittyRole.General, KittyRating.Safe));
+ framework.addCommand("results", new SubCommandResults(KittyRole.General, KittyRating.Safe));
+ framework.addCommand("vote", new SubCommandVote(KittyRole.General, KittyRating.Safe));
+ }
+
+ @Override
+ public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
+ {
+ framework.run(guild, channel, user, input).Call(res);
+ }
+}
diff --git a/src/commands/poll/SubCommandAddOption.java b/src/commands/poll/SubCommandAddOption.java
new file mode 100644
index 0000000..aedf96e
--- /dev/null
+++ b/src/commands/poll/SubCommandAddOption.java
@@ -0,0 +1,23 @@
+package commands.poll;
+
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandAddOption extends SubCommand
+{
+
+ public SubCommandAddOption(KittyRole roleLevel, KittyRating contentRating) {super(roleLevel, contentRating);}
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ return new SubCommandFormattable (guild.addChoiceToPoll(input.args));
+ }
+
+}
\ No newline at end of file
diff --git a/src/commands/poll/SubCommandEnd.java b/src/commands/poll/SubCommandEnd.java
new file mode 100644
index 0000000..fb600cf
--- /dev/null
+++ b/src/commands/poll/SubCommandEnd.java
@@ -0,0 +1,23 @@
+package commands.poll;
+
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandEnd extends SubCommand
+{
+
+ public SubCommandEnd(KittyRole roleLevel, KittyRating contentRating) {super(roleLevel, contentRating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ return new SubCommandFormattable (guild.endPoll());
+ }
+
+}
\ No newline at end of file
diff --git a/src/commands/general/CommandPollResults.java b/src/commands/poll/SubCommandResults.java
similarity index 52%
rename from src/commands/general/CommandPollResults.java
rename to src/commands/poll/SubCommandResults.java
index 016439b..c2486be 100644
--- a/src/commands/general/CommandPollResults.java
+++ b/src/commands/poll/SubCommandResults.java
@@ -1,36 +1,33 @@
-package commands.general;
-
-import java.util.ArrayList;
-
-import core.*;
-import dataStructures.*;
-
-public class CommandPollResults extends Command
-{
- public CommandPollResults(KittyRole level, KittyRating rating) { super(level, rating); }
-
- @Override
- public String getHelpText() { return LocStrings.stub("PollResultsInfo"); }
-
- @Override
- public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
- {
- String results = "";
- int totalVotes = 0;
- ArrayList votes = guild.choices;
-
- for(int i = 0; i < votes.size(); i++)
- {
- totalVotes += votes.get(i).votes;
- }
-
- results += "The poll was " + guild.poll + "\n";
-
- for(int i = 0; i < votes.size(); i++)
- {
- results += String.format(LocStrings.stub("PollResultsResponse"), votes.get(i).votes, votes.get(i).choice, (int)(((double)votes.get(i).votes) / ((double)totalVotes) * 100));
- }
-
- res.send(results);
- }
-}
+package commands.poll;
+
+import java.util.ArrayList;
+
+import core.*;
+import dataStructures.*;
+
+public class SubCommandResults extends SubCommand
+{
+ public SubCommandResults(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ String results = "";
+ int totalVotes = 0;
+ ArrayList votes = guild.choices;
+
+ for(int i = 0; i < votes.size(); i++)
+ {
+ totalVotes += votes.get(i).votes;
+ }
+
+ results += "The poll was " + guild.poll + "\n";
+
+ for(int i = 0; i < votes.size(); i++)
+ {
+ results += String.format(LocStrings.stub("PollResultsResponse"), votes.get(i).votes, votes.get(i).choice, (int)(((double)votes.get(i).votes) / ((double)totalVotes) * 100)) + "\n";
+ }
+
+ return new SubCommandFormattable (results);
+ }
+}
diff --git a/src/commands/poll/SubCommandShow.java b/src/commands/poll/SubCommandShow.java
new file mode 100644
index 0000000..df15f50
--- /dev/null
+++ b/src/commands/poll/SubCommandShow.java
@@ -0,0 +1,34 @@
+package commands.poll;
+
+import core.LocStrings;
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandShow extends SubCommand
+{
+ public SubCommandShow(KittyRole level, KittyRating rating) { super(level, rating); }
+
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ if(!guild.polling)
+ {
+ return new SubCommandFormattable (LocStrings.stub("PollShowNoPoll"));
+ }
+ String poll = String.format(LocStrings.stub("PollShowPoll"), guild.poll);
+ poll += LocStrings.stub("PollShowChoices");
+ for(int i = 0; i < guild.choices.size(); i++)
+ {
+ poll += (i+1) + ": `" + guild.choices.get(i).choice + "`\n";
+ }
+
+ return new SubCommandFormattable (poll);
+ }
+}
diff --git a/src/commands/poll/SubCommandStart.java b/src/commands/poll/SubCommandStart.java
new file mode 100644
index 0000000..48855bc
--- /dev/null
+++ b/src/commands/poll/SubCommandStart.java
@@ -0,0 +1,23 @@
+package commands.poll;
+
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandStart extends SubCommand
+{
+
+ public SubCommandStart(KittyRole roleLevel, KittyRating contentRating) {super(roleLevel, contentRating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ return new SubCommandFormattable (guild.startPoll(input.args));
+ }
+
+}
\ No newline at end of file
diff --git a/src/commands/poll/SubCommandVote.java b/src/commands/poll/SubCommandVote.java
new file mode 100644
index 0000000..33b757d
--- /dev/null
+++ b/src/commands/poll/SubCommandVote.java
@@ -0,0 +1,48 @@
+package commands.poll;
+
+import core.LocStrings;
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyPoll;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandVote extends SubCommand
+{
+ public SubCommandVote(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ if(guild.polling)
+ {
+ if(guild.hasVoted.contains(user.uniqueID))
+ {
+ return new SubCommandFormattable (LocStrings.stub("PollVoteAlreadyVoted"));
+ }
+ try
+ {
+ int voteNum = Integer.parseInt(input.args.substring(input.args.indexOf(" ")).trim())-1;
+ if(voteNum >= guild.choices.size() || voteNum < 0)
+ {
+ return new SubCommandFormattable (String.format(LocStrings.stub("PollVoteNotValidVote"), voteNum));
+ }
+
+ KittyPoll polled = guild.choices.get(voteNum);
+ polled.votes++;
+ guild.hasVoted.add(user.uniqueID);
+ return new SubCommandFormattable (LocStrings.stub("PollVoteSuccess") + " `" + polled.choice + "`!");
+ }
+ catch (NumberFormatException e)
+ {
+ return new SubCommandFormattable (LocStrings.stub("PollVoteNotValidNumber"));
+ }
+ }
+
+ return new SubCommandFormattable (LocStrings.stub("PollVoteNoPoll"));
+ }
+}
diff --git a/src/commands/raffle/CommandRaffleMain.java b/src/commands/raffle/CommandRaffleMain.java
new file mode 100644
index 0000000..db5a4f4
--- /dev/null
+++ b/src/commands/raffle/CommandRaffleMain.java
@@ -0,0 +1,24 @@
+package commands.raffle;
+
+import core.Command;
+import core.SubCommandFramework;
+import dataStructures.*;
+
+public class CommandRaffleMain extends Command
+{
+ SubCommandFramework framework = new SubCommandFramework();
+ public CommandRaffleMain(KittyRole level, KittyRating rating)
+ {
+ super(level, rating);
+ framework.addCommand("start", new SubCommandStart(KittyRole.Mod, KittyRating.Safe));
+ framework.addCommand("spin", new SubCommandSpin(KittyRole.Mod, KittyRating.Safe));
+ framework.addCommand("end", new SubCommandEnd(KittyRole.Mod, KittyRating.Safe));
+ framework.addCommand("join", new SubCommandJoin(KittyRole.General, KittyRating.Safe));
+ }
+
+ @Override
+ public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res)
+ {
+ framework.run(guild, channel, user, input).Call(res);
+ }
+}
\ No newline at end of file
diff --git a/src/commands/raffle/SubCommandEnd.java b/src/commands/raffle/SubCommandEnd.java
new file mode 100644
index 0000000..0f57d9e
--- /dev/null
+++ b/src/commands/raffle/SubCommandEnd.java
@@ -0,0 +1,29 @@
+package commands.raffle;
+
+import core.LocStrings;
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandEnd extends SubCommand
+{
+ public SubCommandEnd(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ if(guild.endRaffle())
+ {
+ return new SubCommandFormattable (LocStrings.stub("RaffleEndSuccess"));
+ }
+ else
+ {
+ return new SubCommandFormattable (LocStrings.stub("RaffleEndFailure"));
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/commands/raffle/SubCommandJoin.java b/src/commands/raffle/SubCommandJoin.java
new file mode 100644
index 0000000..5ee4d96
--- /dev/null
+++ b/src/commands/raffle/SubCommandJoin.java
@@ -0,0 +1,29 @@
+package commands.raffle;
+
+import core.LocStrings;
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandJoin extends SubCommand
+{
+ public SubCommandJoin(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ if(guild.joinRaffle(user))
+ {
+ return new SubCommandFormattable (LocStrings.stub("RaffleJoinSuccess"));
+ }
+ else
+ {
+ return new SubCommandFormattable (LocStrings.stub("RaffleJoinFailure"));
+ }
+ }
+}
diff --git a/src/commands/raffle/SubCommandSpin.java b/src/commands/raffle/SubCommandSpin.java
new file mode 100644
index 0000000..78fb0b9
--- /dev/null
+++ b/src/commands/raffle/SubCommandSpin.java
@@ -0,0 +1,29 @@
+package commands.raffle;
+
+import core.LocStrings;
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandSpin extends SubCommand
+{
+ public SubCommandSpin(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ try
+ {
+ return new SubCommandFormattable (String.format(LocStrings.stub("RaffleSpinSuccess"), guild.chooseRaffleWinner().name));
+ }
+ catch(Exception e)
+ {
+ return new SubCommandFormattable (LocStrings.stub("RaffleSpinFailure"));
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/commands/raffle/SubCommandStart.java b/src/commands/raffle/SubCommandStart.java
new file mode 100644
index 0000000..2b99e47
--- /dev/null
+++ b/src/commands/raffle/SubCommandStart.java
@@ -0,0 +1,40 @@
+package commands.raffle;
+
+import core.LocStrings;
+import core.SubCommand;
+import core.SubCommandFormattable;
+import dataStructures.KittyChannel;
+import dataStructures.KittyGuild;
+import dataStructures.KittyRating;
+import dataStructures.KittyRole;
+import dataStructures.KittyUser;
+import dataStructures.UserInput;
+
+public class SubCommandStart extends SubCommand
+{
+ public SubCommandStart(KittyRole level, KittyRating rating) { super(level, rating); }
+
+ public int beanCost;
+
+ @Override
+ public SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
+ {
+ try
+ {
+ beanCost = Integer.parseInt(input.args);
+ }
+ catch(Exception e)
+ {
+ beanCost = 100;
+ }
+
+ if(guild.startRaffle(beanCost))
+ {
+ return new SubCommandFormattable (String.format(LocStrings.stub("RaffleStartSuccess"), beanCost));
+ }
+ else
+ {
+ return new SubCommandFormattable (LocStrings.stub("RaffleStartFailure"));
+ }
+ }
+}
diff --git a/src/core/CommandManager.java b/src/core/CommandManager.java
index 750531c..c1441c4 100644
--- a/src/core/CommandManager.java
+++ b/src/core/CommandManager.java
@@ -1,11 +1,56 @@
package core;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Map.Entry;
import commands.characters.CommandCharacterMain;
-import commands.general.*;
+import commands.general.CommandBeansShow;
+import commands.general.CommandBenchmark;
+import commands.general.CommandBetBeans;
+import commands.general.CommandBetHistory;
+import commands.general.CommandBlurry;
+import commands.general.CommandBoop;
+import commands.general.CommandCatch;
+import commands.general.CommandChangeIndicator;
+import commands.general.CommandChoose;
+import commands.general.CommandColiru;
+import commands.general.CommandColor;
+import commands.general.CommandCrouton;
+import commands.general.CommandDBFlush;
+import commands.general.CommandDBStats;
+import commands.general.CommandDoWork;
+import commands.general.CommandEightBall;
+import commands.general.CommandFetch;
+import commands.general.CommandGiveBeans;
+import commands.general.CommandHelp;
+import commands.general.CommandHelpBuilder;
+import commands.general.CommandInfo;
+import commands.general.CommandInvite;
+import commands.general.CommandJDoodle;
+import commands.general.CommandLeaderboard;
+import commands.general.CommandMap;
+import commands.general.CommandPerish;
+import commands.general.CommandPing;
+import commands.general.CommandRPEnd;
+import commands.general.CommandRPG;
+import commands.general.CommandRPStart;
+import commands.general.CommandRating;
+import commands.general.CommandRemind;
+import commands.general.CommandRole;
+import commands.general.CommandRoll;
+import commands.general.CommandShutdown;
+import commands.general.CommandStark;
+import commands.general.CommandStats;
+import commands.general.CommandTeey;
+import commands.general.CommandTweet;
+import commands.general.CommandWolfram;
+import commands.general.CommandYeet;
import commands.guildrole.CommandGuildRoleMain;
+import commands.mod.CommandModMain;
+import commands.music.CommandMusicMain;
+import commands.poll.CommandPollMain;
+import commands.raffle.CommandRaffleMain;
import dataStructures.KittyChannel;
import dataStructures.KittyGuild;
import dataStructures.KittyRating;
@@ -70,12 +115,9 @@ public class CommandManager
this.register(LocCommands.stub("indicator"), new CommandChangeIndicator(KittyRole.Admin, KittyRating.Safe));
// Mod
- this.register(LocCommands.stub("poll"), new CommandPollManage(KittyRole.Mod, KittyRating.Safe));
this.register(LocCommands.stub("givebeans"), new CommandGiveBeans(KittyRole.Mod, KittyRating.Safe));
this.register(LocCommands.stub("rpg"), new CommandRPG(KittyRole.Mod, KittyRating.Safe));
- this.register(LocCommands.stub("rafflestart"), new CommandRaffleStart(KittyRole.Mod, KittyRating.Safe));
- this.register(LocCommands.stub("rafflespin"), new CommandRaffleSpin(KittyRole.Mod, KittyRating.Safe));
- this.register(LocCommands.stub("raffleend"), new CommandRaffleEnd(KittyRole.Mod, KittyRating.Safe));
+ this.register(LocCommands.stub("mod"), new CommandModMain(KittyRole.Mod, KittyRating.Safe));
// General
this.register(LocCommands.stub("fetch"), new CommandFetch(KittyRole.General, KittyRating.Safe));
@@ -88,9 +130,6 @@ public class CommandManager
this.register(LocCommands.stub("choose"), new CommandChoose(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("help"), new CommandHelp(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("info, about"), new CommandInfo(KittyRole.General, KittyRating.Safe));
- this.register(LocCommands.stub("vote"), new CommandPollVote(KittyRole.General, KittyRating.Safe));
- this.register(LocCommands.stub("results"), new CommandPollResults(KittyRole.General, KittyRating.Safe));
- this.register(LocCommands.stub("showpoll"), new CommandPollShow(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("wolfram"), new CommandWolfram(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("c++, g++, cplus, cpp"), new CommandColiru(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("java, jdoodle"), new CommandJDoodle(KittyRole.General, KittyRating.Safe));
@@ -107,12 +146,14 @@ public class CommandManager
this.register(LocCommands.stub("bethistory"), new CommandBetHistory(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("crouton"), new CommandCrouton(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("benchmark, bench"), new CommandBenchmark(KittyRole.General, KittyRating.Safe));
- this.register(LocCommands.stub("rafflejoin"), new CommandRaffleJoin(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("leaderboard"), new CommandLeaderboard(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("color, colour"), new CommandColor(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("remind"), new CommandRemind(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("role"), new CommandGuildRoleMain(KittyRole.General, KittyRating.Safe));
this.register(LocCommands.stub("character"), new CommandCharacterMain(KittyRole.General, KittyRating.Safe));
+ this.register(LocCommands.stub("raffle"), new CommandRaffleMain(KittyRole.General, KittyRating.Safe));
+ this.register(LocCommands.stub("poll"), new CommandPollMain(KittyRole.General, KittyRating.Safe));
+ this.register(LocCommands.stub("music"), new CommandMusicMain(KittyRole.General, KittyRating.Safe));
}
// Allows the command manager to keep track of a command. Takes a pair (the un-localized and localzied commands)
diff --git a/src/core/ObjectBuilderFactory.java b/src/core/ObjectBuilderFactory.java
index e376c81..55bd838 100644
--- a/src/core/ObjectBuilderFactory.java
+++ b/src/core/ObjectBuilderFactory.java
@@ -7,6 +7,9 @@ import java.util.concurrent.Semaphore;
import javax.security.auth.login.LoginException;
+import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
+import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager;
+
import core.lua.PluginManager;
import dataStructures.*;
import main.Main;
@@ -17,6 +20,7 @@ import net.dv8tion.jda.core.entities.*;
import net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent;
import offline.Ref;
import utils.AdminControl;
+import utils.AudioUtils;
import utils.GlobalLog;
import utils.LogFilter;
@@ -50,6 +54,9 @@ public class ObjectBuilderFactory
// Command manager
private static CommandManager commandManager;
+ //Audio track manager
+ private static AudioPlayerManager audioPlayer = new DefaultAudioPlayerManager();
+
// Localization classes - these are singletons, but should be initialized before almost all other
// things so their inclusion in the factory is to ensure they're started at the correct time.
@SuppressWarnings("unused") private static LocStrings locStrings;
@@ -140,7 +147,8 @@ public class ObjectBuilderFactory
else
{
// Construct a new guild with defaults
- guild = new KittyGuild(uid, new AdminControl(event.getGuild()), emotesString);
+ guild = new KittyGuild(uid, new AdminControl(event.getGuild()), emotesString,
+ new AudioUtils(event.getGuild(), audioPlayer.createPlayer()));
DatabaseManager.instance.globalRegister(guild);
guildCache.put(uid, guild);
}
diff --git a/src/core/SubCommand.java b/src/core/SubCommand.java
index 2b0b81f..e3f3216 100644
--- a/src/core/SubCommand.java
+++ b/src/core/SubCommand.java
@@ -42,12 +42,12 @@ public abstract class SubCommand
// Called by the Command manager - this will run the command
// if the issuing user has the permission to do so!
- protected final void Invoke(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ protected final SubCommandFormattable Invoke(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
if(!CanCall(guild, channel, user))
- return;
+ return null;
- OnRun(guild, channel, user, input);
+ return OnRun(guild, channel, user, input);
}
public KittyRating Rating()
@@ -60,5 +60,5 @@ public abstract class SubCommand
return roleLevel;
}
- public abstract SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, String input);
+ public abstract SubCommandFormattable OnRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input);
}
\ No newline at end of file
diff --git a/src/core/SubCommandFramework.java b/src/core/SubCommandFramework.java
index ee44eaf..2d19a51 100644
--- a/src/core/SubCommandFramework.java
+++ b/src/core/SubCommandFramework.java
@@ -5,6 +5,7 @@ import java.util.HashMap;
import dataStructures.KittyChannel;
import dataStructures.KittyGuild;
import dataStructures.KittyUser;
+import dataStructures.UserInput;
import utils.GlobalLog;
public class SubCommandFramework
@@ -25,10 +26,22 @@ public class SubCommandFramework
GlobalLog.log("Registered SubCommand " + name);
}
- public SubCommandFormattable run(KittyGuild guild, KittyChannel channel, KittyUser user, String input)
+ public SubCommandFormattable run(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input)
{
- System.out.print(input);
- SubCommandFormattable res = commands.get(input.split(" ")[0].toLowerCase()).OnRun(guild, channel, user, input.substring(input.indexOf(" ")));
- return res;
+ SubCommand res = commands.get(input.args.split(" ")[0].toLowerCase());
+ try
+ {
+ input.args = input.args.substring(input.args.indexOf(' ')).trim();
+ }
+ catch(Exception e){}
+
+ try
+ {
+ return res.Invoke(guild, channel, user, input);
+ }
+ catch(Exception e)
+ {
+ return new SubCommandFormattable("That's not a valid subcommand!");
+ }
}
-}
+}
\ No newline at end of file
diff --git a/src/dataStructures/KittyGuild.java b/src/dataStructures/KittyGuild.java
index 155679e..209c69a 100644
--- a/src/dataStructures/KittyGuild.java
+++ b/src/dataStructures/KittyGuild.java
@@ -5,6 +5,7 @@ import java.util.ArrayList;
import core.DatabaseManager;
import core.DatabaseTrackedObject;
import utils.AdminControl;
+import utils.AudioUtils;
// Context for a given guild for kittybot. Primarily designed to hold guild-specific settings.
public class KittyGuild extends DatabaseTrackedObject
@@ -21,6 +22,7 @@ public class KittyGuild extends DatabaseTrackedObject
public ArrayList emoji = new ArrayList();
public ArrayList choices = new ArrayList();
public AdminControl control;
+ public AudioUtils audio;
public ArrayList raffleUsersUnchosen = new ArrayList();
public ArrayList raffleUsersChosen = new ArrayList();
@@ -40,7 +42,7 @@ public class KittyGuild extends DatabaseTrackedObject
}
// Default content for a guild
- public KittyGuild(String uniqueID, AdminControl adminControl, ArrayList emoji)
+ public KittyGuild(String uniqueID, AdminControl adminControl, ArrayList emoji, AudioUtils audio)
{
super(uniqueID);
this.uniqueID = uniqueID;
@@ -52,6 +54,7 @@ public class KittyGuild extends DatabaseTrackedObject
this.contentRating = KittyRating.Safe;
this.polling = false;
this.emoji = emoji;
+ this.audio = audio;
setCommandIndicator("!");
}
diff --git a/src/network/NetworkYoutube.java b/src/network/NetworkYoutube.java
new file mode 100644
index 0000000..d2ee0b6
--- /dev/null
+++ b/src/network/NetworkYoutube.java
@@ -0,0 +1,14 @@
+package network;
+
+import com.google.api.services.youtube.YouTube;
+
+import offline.Ref;
+
+public class NetworkYoutube
+{
+ private static YouTube youtube;
+
+ public NetworkYoutube()
+ {
+ }
+}
\ No newline at end of file
diff --git a/src/utils/AdminControl.java b/src/utils/AdminControl.java
index bc919d2..ce13637 100644
--- a/src/utils/AdminControl.java
+++ b/src/utils/AdminControl.java
@@ -39,4 +39,43 @@ public class AdminControl
}
return true;
}
+
+ public boolean kickMember(String memberID)
+ {
+ try
+ {
+ guildCon.kick(guild.getMemberById(memberID)).complete();
+ }
+ catch(Exception e)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ public boolean muteMember(String memberID)
+ {
+ try
+ {
+ guildCon.setMute(guild.getMemberById(memberID), true);
+ return true;
+ }
+ catch(Exception e)
+ {
+ return false;
+ }
+ }
+
+ public boolean banMember(String memberID)
+ {
+ try
+ {
+ guildCon.ban(guild.getMemberById(memberID), 0).complete();
+ return true;
+ }
+ catch(Exception e)
+ {
+ return false;
+ }
+ }
}
diff --git a/src/utils/AudioUtils.java b/src/utils/AudioUtils.java
new file mode 100644
index 0000000..79c1529
--- /dev/null
+++ b/src/utils/AudioUtils.java
@@ -0,0 +1,48 @@
+package utils;
+/***
+ * https://developers.google.com/youtube/v3/code_samples/code_snippets?apix_params=%7B%22part%22%3A%22snippet%22%2C%22maxResults%22%3A25%2C%22q%22%3A%22surfing%22%7D
+ * https://github.com/sedmelluq/LavaPlayer#jda-integration
+ * https://ci.dv8tion.net/job/JDA/javadoc/net/dv8tion/jda/core/entities/VoiceChannel.html
+ * https://developers.google.com/youtube/registering_an_application#Create_API_Keys
+ */
+import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
+
+import net.dv8tion.jda.core.entities.Guild;
+import net.dv8tion.jda.core.entities.VoiceChannel;
+import net.dv8tion.jda.core.managers.AudioManager;
+
+public class AudioUtils
+{
+ private Guild guild;
+ AudioManager audio;
+ AudioPlayer player;
+
+
+ public AudioUtils(Guild guild)
+ {
+ this.guild = guild;
+ audio = guild.getAudioManager();
+ }
+
+ public boolean joinChannel(String channelName)
+ {
+ VoiceChannel channel = null;
+ channel = guild.getVoiceChannelsByName(channelName, true).get(0);
+ if(channel != null)
+ {
+ audio.openAudioConnection(channel);
+ return true;
+ }
+ return false;
+ }
+
+ public boolean leaveChannel()
+ {
+ if(audio.isConnected())
+ {
+ audio.closeAudioConnection();
+ return true;
+ }
+ return false;
+ }
+}