diff --git a/.gitignore b/.gitignore index 330a9173..aece16ef 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,5 @@ target/ src/main/resources/config.json src/main/resources/config.json +src/main/resources/config.json +src/main/resources/config.json diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..5b2e27ba --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 00000000..aa00ffab --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 00000000..712ab9d9 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..93c3f204 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 00000000..e96534fb --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/org/jointheleague/discord_bot_example/Bot.java b/src/main/java/org/jointheleague/discord_bot_example/Bot.java index 06e330bf..073c13a6 100644 --- a/src/main/java/org/jointheleague/discord_bot_example/Bot.java +++ b/src/main/java/org/jointheleague/discord_bot_example/Bot.java @@ -1,55 +1,61 @@ package org.jointheleague.discord_bot_example; import org.javacord.api.DiscordApi; - import org.javacord.api.DiscordApiBuilder; - -/** - * Launches all of the listeners for one channel. - * @author keithgroves and https://tinystripz.com - * - */ import org.jointheleague.modules.*; -import org.jointheleague.modules.pojo.HelpEmbed; +public class Bot { -public class Bot { -// private static final String COMMAND = "!help"; - // The string to show the custom :vomiting_robot: emoji - public static String emoji = "<:vomiting_robot:642414033290657803>"; + // The string to show the custom :vomiting_robot: emoji + public static String emoji = "<:vomiting_robot:642414033290657803>"; - private String token; - private String channelName; - DiscordApi api; - _HelpListener helpListener; - - public Bot(String token, String channelName) { - //helpEmbed = new HelpEmbed(COMMAND, "Allows you to get a random number. You can also specify a range of values (e.g. !random 50-100)"); - this.token = token; - this.channelName = channelName; - helpListener = new _HelpListener(channelName); - } + private final String token; + private final String channelName; + DiscordApi api; + _HelpListener helpListener; - public void connect(boolean printInvite) { - - api = new DiscordApiBuilder().setToken(token).login().join(); + public Bot(String token, String channelName) { + this.token = token; + this.channelName = channelName; + helpListener = new _HelpListener(channelName); + } - // Print the URL to invite the bot - if (printInvite) { - System.out.println("You can invite the bot by using the following url: " + api.createBotInvite()); - } + public void connect(boolean printInvite) { + api = new DiscordApiBuilder().setToken(token).login().join(); + + // Print the URL to invite the bot + if (printInvite) { + System.out.println("You can invite the bot by using the following url: " + api.createBotInvite()); + } + + api.getServerTextChannelsByName(channelName).forEach(e -> e.sendMessage("Bot Connected")); + + // add Listeners + + NumberRandom rn = new NumberRandom(channelName); + api.addMessageCreateListener(rn); + helpListener.addHelpEmbed(rn.getHelpEmbed()); + + RollDie rd = new RollDie(channelName); + api.addMessageCreateListener(rd); + helpListener.addHelpEmbed(rd.getHelpEmbed()); + + NumberGuesser ng = new NumberGuesser(channelName); + api.addMessageCreateListener(ng); + helpListener.addHelpEmbed(ng.getHelpEmbed()); + + BotKick bk = new BotKick(channelName); + api.addMessageCreateListener(bk); + helpListener.addHelpEmbed(bk.getHelpEmbed()); - api.getServerTextChannelsByName(channelName).forEach(e -> e.sendMessage("Bot Connected")); - - //add Listeners DiscordLibrary dl = new DiscordLibrary(channelName); api.addMessageCreateListener(dl); helpListener.addHelpEmbed(dl.getHelpEmbed()); - - CurrencyConverter cc = new CurrencyConverter(channelName); - api.addMessageCreateListener(cc); - helpListener.addHelpEmbed(cc.getHelpEmbed()); + +// CurrencyConverter cc = new CurrencyConverter(channelName); +// api.addMessageCreateListener(cc); +// helpListener.addHelpEmbed(cc.getHelpEmbed()); ToDoList list = new ToDoList(channelName); api.addMessageCreateListener(list); @@ -59,57 +65,53 @@ public void connect(boolean printInvite) { api.addMessageCreateListener(maze); helpListener.addHelpEmbed(maze.getHelpEmbed()); - HeadlineListener head = new HeadlineListener(channelName); + MarsPictures marsPictures = new MarsPictures(channelName); + api.addMessageCreateListener(marsPictures); + helpListener.addHelpEmbed(marsPictures.getHelpEmbed()); + + HeadlineListener head = new HeadlineListener(channelName); api.addMessageCreateListener(head); helpListener.addHelpEmbed(head.getHelpEmbed()); - RandomNumber randomNumber = new RandomNumber(channelName); //replace with feature class later - api.addMessageCreateListener(randomNumber); - helpListener.addHelpEmbed(randomNumber.getHelpEmbed()); - - Feature1 feature1 = new Feature1(channelName); - api.addMessageCreateListener(feature1); - helpListener.addHelpEmbed(feature1.getHelpEmbed()); - +// RandomNumber randomNumber = new RandomNumber(channelName); // replace with feature class later +// api.addMessageCreateListener(randomNumber); +// helpListener.addHelpEmbed(randomNumber.getHelpEmbed()); + HypeMachine hypeMachine = new HypeMachine(channelName); api.addMessageCreateListener(hypeMachine); helpListener.addHelpEmbed(hypeMachine.getHelpEmbed()); - + TextStyler textStyler = new TextStyler(channelName); api.addMessageCreateListener(textStyler); helpListener.addHelpEmbed(textStyler.getHelpEmbed()); - + Tomagachi tomagachi = new Tomagachi(channelName); api.addMessageCreateListener(tomagachi); helpListener.addHelpEmbed(tomagachi.getHelpEmbed()); - + SetProfilePic setPFP = new SetProfilePic(channelName); api.addMessageCreateListener(setPFP); helpListener.addHelpEmbed(setPFP.getHelpEmbed()); - + ToGif toGif = new ToGif(channelName); api.addMessageCreateListener(toGif); helpListener.addHelpEmbed(toGif.getHelpEmbed()); - + RandomCase randomCase = new RandomCase(channelName); api.addMessageCreateListener(randomCase); helpListener.addHelpEmbed(randomCase.getHelpEmbed()); - + _ApiExampleListener apiExampleListener = new _ApiExampleListener(channelName); api.addMessageCreateListener(apiExampleListener); helpListener.addHelpEmbed(apiExampleListener.getHelpEmbed()); - + NewWeather newWeather = new NewWeather(channelName); api.addMessageCreateListener(newWeather); helpListener.addHelpEmbed(newWeather.getHelpEmbed()); - - DeathMatch hungerGames = new DeathMatch(channelName); - api.addMessageCreateListener(hungerGames); - helpListener.addHelpEmbed(hungerGames.getHelpEmbed()); CoinFlip cp = new CoinFlip(channelName); api.addMessageCreateListener(cp); - + RollDie rollDie = new RollDie(channelName); api.addMessageCreateListener(rollDie); @@ -120,6 +122,18 @@ public void connect(boolean printInvite) { pythagcalc pythagCalc = new pythagcalc(channelName); api.addMessageCreateListener(pythagCalc); helpListener.addHelpEmbed(pythagCalc.getHelpEmbed()); + + Reminder reminder = new Reminder(channelName); + api.addMessageCreateListener(reminder); + helpListener.addHelpEmbed(reminder.getHelpEmbed()); + + Hello hello = new Hello(channelName); + api.addMessageCreateListener(hello); + helpListener.addHelpEmbed(hello.getHelpEmbed()); + + Poll poll = new Poll(channelName); + api.addMessageCreateListener(poll); + helpListener.addHelpEmbed(poll.getHelpEmbed()); //Greeter g = new Greeter(channelName); //api.addMessageCreateListener(g); @@ -128,6 +142,10 @@ public void connect(boolean printInvite) { api.addMessageCreateListener(dza); helpListener.addHelpEmbed(dza.getHelpEmbed()); + Poker poker = new Poker(channelName); + api.addMessageCreateListener(poker); + helpListener.addHelpEmbed(poker.getHelpEmbed()); + CovidCaseGetter covid = new CovidCaseGetter(channelName); api.addMessageCreateListener(covid); helpListener.addHelpEmbed(covid.getHelpEmbed()); @@ -135,7 +153,7 @@ public void connect(boolean printInvite) { ListMakerMessageListener LM = new ListMakerMessageListener(channelName); api.addMessageCreateListener(LM); helpListener.addHelpEmbed(LM.getHelpEmbed()); - + Dice d = new Dice(channelName); api.addMessageCreateListener(d); helpListener.addHelpEmbed(d.getHelpEmbed()); @@ -143,12 +161,20 @@ public void connect(boolean printInvite) { UnbeatableRockPaperScissors rps = new UnbeatableRockPaperScissors(channelName); api.addMessageCreateListener(rps); helpListener.addHelpEmbed(rps.getHelpEmbed()); - Depression depress = new Depression(channelName); + + FilmRecommendations f = new FilmRecommendations(channelName); + api.addMessageCreateListener(f); + helpListener.addHelpEmbed(f.getHelpEmbed()); + + Depression depress = new Depression(channelName); api.addMessageCreateListener(depress); helpListener.addHelpEmbed(depress.getHelpEmbed()); - - - //old way to add listeners + + //Depression depress = new Depression(channelName); +// api.addMessageCreateListener(depress); +// helpListener.addHelpEmbed(depress.getHelpEmbed()); + + // old way to add listeners api.addMessageCreateListener(helpListener); api.addMessageCreateListener(new MomBot(channelName)); api.addMessageCreateListener(new DadJokes(channelName)); @@ -175,7 +201,7 @@ public void connect(boolean printInvite) { api.addMessageCreateListener(new LatexRender(channelName)); api.addMessageCreateListener(new MinesweeperListener(channelName)); api.addMessageCreateListener(new Bot1Listener(channelName)); - api.addMessageCreateListener(new PingMessageListener(channelName)); + api.addMessageCreateListener(new PingMessageListener(channelName)); api.addMessageCreateListener(new CoinFlipMessageListener(channelName)); api.addMessageCreateListener(new PlayRPSMessageListener(channelName)); api.addMessageCreateListener(new KickMessageListener(channelName)); @@ -192,8 +218,5 @@ public void connect(boolean printInvite) { api.addMessageCreateListener(new RandomCase(channelName)); api.addMessageCreateListener(new GetTime(channelName)); api.addMessageCreateListener(new ScreenCapture(channelName)); - api.addMessageCreateListener(new StarSignSeeker(channelName)); - api.addMessageCreateListener(new War(channelName)); - //api.addMessageCreateListener(new Depression(channelName)); } -} +} \ No newline at end of file diff --git a/src/main/java/org/jointheleague/modules/BotKick.java b/src/main/java/org/jointheleague/modules/BotKick.java new file mode 100644 index 00000000..d753cc93 --- /dev/null +++ b/src/main/java/org/jointheleague/modules/BotKick.java @@ -0,0 +1,63 @@ +package org.jointheleague.modules; + +import net.aksingh.owmjapis.api.APIException; +import org.javacord.api.event.message.MessageCreateEvent; + +import java.util.Random; + + +public class BotKick extends CustomMessageCreateListener { + public BotKick(String channelName) { + super(channelName); + } + + @Override + public void handle(MessageCreateEvent event) throws APIException, InterruptedException { + + String messageContent2 = event.getMessageContent(); + String rock = "rock"; + String paper = "paper"; + String scissors = "scissors"; + String botChoice = ""; + Random ran = new Random(); + int Random = ran.nextInt(3); + if (Random == 0){ + botChoice = scissors; + } + if (Random == 1){ + botChoice = rock; + } + if (Random == 2){ + botChoice = paper; + } + if(messageContent2.contains(rock)){ + event.getChannel().sendMessage("Computer chose: " + botChoice); + if (botChoice.equals(scissors)){ + event.getChannel().sendMessage("You win"); + } + else if (botChoice.equals(paper)){ + event.getChannel().sendMessage("You lose"); + } + } + else if(messageContent2.contains(scissors)) { + event.getChannel().sendMessage("Computer chose: " + botChoice); + if (botChoice.equals(paper)) { + event.getChannel().sendMessage("You win"); + } else if (botChoice.equals(rock)) { + event.getChannel().sendMessage("You lose"); + } + } + else if(messageContent2.contains(paper)) { + event.getChannel().sendMessage("Computer chose: " + botChoice); + if (botChoice.equals(rock)) { + event.getChannel().sendMessage("You win"); + } else if (botChoice.equals(scissors)) { + event.getChannel().sendMessage("You lose"); + } + } + + + + } +} + diff --git a/src/main/java/org/jointheleague/modules/CustomMessageCreateListener.java b/src/main/java/org/jointheleague/modules/CustomMessageCreateListener.java index 699aee68..61f2d5d9 100644 --- a/src/main/java/org/jointheleague/modules/CustomMessageCreateListener.java +++ b/src/main/java/org/jointheleague/modules/CustomMessageCreateListener.java @@ -22,7 +22,7 @@ public void onMessageCreate(MessageCreateEvent event) { if (e.getName().equals(channelName)) { try { handle(event); - } catch (APIException e1) { + } catch (APIException | InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } @@ -34,5 +34,5 @@ public HelpEmbed getHelpEmbed() { return this.helpEmbed; } - public abstract void handle(MessageCreateEvent event) throws APIException; + public abstract void handle(MessageCreateEvent event) throws APIException, InterruptedException; } \ No newline at end of file diff --git a/src/main/java/org/jointheleague/modules/FilmRecommendations.java b/src/main/java/org/jointheleague/modules/FilmRecommendations.java new file mode 100644 index 00000000..a31f0178 --- /dev/null +++ b/src/main/java/org/jointheleague/modules/FilmRecommendations.java @@ -0,0 +1,185 @@ +package org.jointheleague.modules; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.ProtocolException; +import java.net.URL; +import java.util.HashMap; +import java.util.List; + +import javax.json.Json; +import javax.json.JsonObject; +import javax.json.JsonReader; + +import org.javacord.api.event.message.MessageCreateEvent; +import org.jointheleague.modules.pojo.HelpEmbed; +import org.jointheleague.modules.pojo.apiExample.ApiExampleWrapper; +import org.jointheleague.modules.pojo.apiExample.Article; +import org.jointheleague.modules.pojo.movieRecs.com.example.Movie2; +import org.jointheleague.modules.pojo.movieRecs.com.example.Result; + +import com.google.gson.Gson; + +import net.aksingh.owmjapis.api.APIException; + +public class FilmRecommendations extends CustomMessageCreateListener { + + private final String apiKey = "fa92f432901a636644b602c85e08eb4a"; + private static final String COMMAND = "!moviesAPI"; + private final Gson gson = new Gson(); + HashMap genreMap = new HashMap(); + + public FilmRecommendations(String channelName) { + super(channelName); + helpEmbed = new HelpEmbed(COMMAND, "Please type '!moviesAPI' and the name of a movie you want information for."); + genreMap.put(28, "Action"); + genreMap.put(12, "Adventure"); + genreMap.put(16, "Animation"); + genreMap.put(35, "Comedy"); + genreMap.put(80, "Crime"); + genreMap.put(99, "Documentary"); + genreMap.put(18, "Drama"); + genreMap.put(10751, "Family"); + genreMap.put(14, "Fantasy"); + genreMap.put(36, "History"); + genreMap.put(27, "Horror"); + genreMap.put(10402, "Music"); + genreMap.put(9648, "Mystery"); + genreMap.put(10749, "Romance"); + genreMap.put(878, "Science Fiction"); + genreMap.put(10770, "TV Movie"); + genreMap.put(53, "Thriller"); + genreMap.put(10752, "War"); + genreMap.put(37, "Western"); + } + + + + @Override + public void handle(MessageCreateEvent event) throws APIException { + + if(event.getMessageContent().contains(COMMAND)) { + //remove the command so we are only left with the search term + //String msg = event.getMessageContent(); + + String [] msg = event.getMessageContent().split(" "); + if (msg[0].equals("!moviesAPI")) { + //event.getChannel().sendMessage("Please give me a movie"); + String userOutput = ""; + + for(int i = 1; i < msg.length; i++) { + userOutput += msg[i]; + + if(i < msg.length-1) { + userOutput += "%20"; + } + } + + System.out.println(userOutput); + + + String movieInfo = getMovie(userOutput); + System.out.println(movieInfo); + event.getChannel().sendMessage(movieInfo); + + //event.getChannel().sendMessage("Please put a word after the command"); + } + else { + event.getChannel().sendMessage("Please enter a movie."); + String userOutput = ""; + for(int i = 1; i < msg.length; i++) { + userOutput += msg[i]; + + if(i < msg.length-1) { + userOutput += "%20"; + } + } + } + } + } + public String getMovie(String movieName) { + + //create the request URL (can be found in the documentation) +// String requestURL = "http://newsapi.org/v2/everything?" + +// "q="+topic+"&" + +// "sortBy=popularity&" + +// "apiKey="+apiKey; + + //String requestURL = "https://api.themoviedb.org/3/movie/550?api_key=fa92f432901a636644b602c85e08eb4a"; + String requestURL = "https://api.themoviedb.org/3/search/movie?api_key=" + apiKey + "&language=en-US&query=" + movieName + "&page=1&include_adult=false"; + + try { + + //the following code will probably be the same for your feature + URL url = new URL(requestURL); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("GET"); + JsonReader repoReader = Json.createReader(con.getInputStream()); + JsonObject userJSON = ((JsonObject) repoReader.read()); + con.disconnect(); + + //turn the json response into a java object + //you will need to create a java class that represents the response in org.jointheleague.modules.pojo + //you can use a tools like Postman and jsonschema2pojo.com to help with that + + //you can use postman to make the request and receive a response, then take that and put it right into jsonschema2pojo.com + //If using jsonschema2pojo.com, select Target Langue = java, Source Type = JSON, Annotation Style = Gson + Movie2 movie = gson.fromJson(userJSON.toString(), Movie2.class); + + String getTitleStr = ""; + String getOverviewStr = ""; + List getGenreStr = null; + Double getVoteNum = null; + List resultList = movie.getResults(); + + if(resultList.size() > 0) { + Result r = resultList.get(0); + getTitleStr = r.getTitle(); + getOverviewStr = r.getOverview(); + getGenreStr = r.getGenreIds(); + getVoteNum = r.getVoteAverage(); + } else { + return "Please enter a movie."; + } + + //get the genre of movie (these are just java objects now) +// String getGenreName = ""; +// List genreList = movie.getGenres(); +// for (int i = 0; i < genreList.size(); i++) { +// Genre g = genreList.get(i); +// getGenreName = g.getName(); +// } +// +// //get the title of the movie +// String title = movie.getTitle(); +// +// //get the overview of the movie +// String overview = movie.getOverview(); + + //create the message + String genre = "*not found*"; + if(getGenreStr.size() > 0) { + genre = genreMap.get(getGenreStr.get(0)); + } + + String message = "'" + getTitleStr + "' is in the genre " + genre + ". " + + "Here is an overview of the movie: " + getOverviewStr + " " + " This movie got an average of " + getVoteNum + " votes."; + + //send the message + return message; + + + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (ProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + //fix catch statement + return "No information found. Enter a different movie."; + + } + +} \ No newline at end of file diff --git a/src/main/java/org/jointheleague/modules/Hello.java b/src/main/java/org/jointheleague/modules/Hello.java new file mode 100644 index 00000000..3d216b85 --- /dev/null +++ b/src/main/java/org/jointheleague/modules/Hello.java @@ -0,0 +1,26 @@ +package org.jointheleague.modules; + +import org.javacord.api.event.message.MessageCreateEvent; +import org.jointheleague.modules.pojo.HelpEmbed; + +import net.aksingh.owmjapis.api.APIException; + +public class Hello extends CustomMessageCreateListener { + + private static final String COMMAND = "!Hello"; + + public Hello(String channelName) { + super(channelName); + helpEmbed = new HelpEmbed(COMMAND, "This is a simple command that gives you a friendly Hello! To use it just type \\\"!Hello\\\""); + } + + @Override + public void handle(MessageCreateEvent event) throws APIException { + if (event.getMessageContent().contains(COMMAND)) { + String user = event.getMessageAuthor().getDisplayName().toString(); + event.getChannel().sendMessage("Hello! " + user); + + } + } + +} diff --git a/src/main/java/org/jointheleague/modules/MarsPictures.java b/src/main/java/org/jointheleague/modules/MarsPictures.java new file mode 100644 index 00000000..86c1b715 --- /dev/null +++ b/src/main/java/org/jointheleague/modules/MarsPictures.java @@ -0,0 +1,125 @@ +package org.jointheleague.modules; + +import java.net.HttpURLConnection; +import java.net.URL; + +import javax.json.Json; +import javax.json.JsonObject; +import javax.json.JsonReader; + +import org.javacord.api.event.message.MessageCreateEvent; +import org.jointheleague.modules.pojo.HelpEmbed; +import org.jointheleague.modules.pojo.MarsImage.MarsImageWrapper; +import org.jointheleague.modules.pojo.MarsRover.ManifestRover; +import org.jointheleague.modules.pojo.MarsRover.MarsRoverWrapper; + +import com.google.gson.Gson; + +public class MarsPictures extends CustomMessageCreateListener{ + + private final String apiKey = "aY1trRHtbf5TdONEoOJcngI3SCjgeZbAPRPf7ccx"; + private static final String COMMAND = "!marsImage"; + private final Gson gson = new Gson(); + + public MarsPictures(String channelName) { + super(channelName); + helpEmbed = new HelpEmbed(COMMAND, "This command will return an image taken by a mars rover (either Curiosity, Opportunity, or Spirit). " + + "This command will require you to input the rover you want to get pictures from and the martian sol (day) that you want to get images from. " + + "You are also optionally able to input a specific camera to get images from. The parameters should be in the order . " + + "Use \"!marsImage cameras\" to see what cameras are supported by what rovers. Use \"!marsImage manifest \" to see the mission manifest " + + "of the rover."); + } + + @Override + public void handle(MessageCreateEvent event) { + if(!event.getMessageAuthor().isBotUser() && event.getMessageContent().startsWith(COMMAND)) { + //remove the command so we are only left with the search term + String msg = event.getMessageContent().replace(COMMAND + " ", ""); + String[] parameterList = msg.split(" "); + + for (int i = 0; i < parameterList.length; i++) { + System.out.println(parameterList[i]); + } + + if(parameterList[0].equalsIgnoreCase(COMMAND) || parameterList[0].equalsIgnoreCase("help")) { + event.getChannel().sendMessage(helpEmbed.getDescription()); + } else if(parameterList[0].equalsIgnoreCase("cameras")) { + event.getChannel().sendMessage("```" + + "Abbreviation: | Camera: | Rovers:\n" + + "FHAZ | Front Hazard Avoidance Camera | Curiosity, Opportunity, Spirit\n" + + "RHAZ | Rear Hazard Avoidance Camera | Curiosity, Opportunity, Spirit\n" + + "MAST | Mast Camera | Curiosity\n" + + "CHEMCAM | Chemistry and Camera Complex | Curiosity\n" + + "MAHLI | Mars Hand Lens Imager | Curiosity\n" + + "MARDI | Mars descent Imager | Curiosity\n" + + "NAVCAM | Navigation Camera | Curiosity, Opportunity, Spirit\n" + + "PANCAM | Panoramic Camera | Opportunity, Spirit\n" + + "MINITES | Miniature Thermal Emission Spectrometer | Opportunity, Spirit\n" + + "```"); + } else if(parameterList[0].equalsIgnoreCase("manifest") && parameterList.length > 1){ + event.getChannel().sendMessage(getMarsRoverManifest(parameterList[1])); + } else { + if (parameterList.length < 2) { + event.getChannel().sendMessage("You didn't enter enough parameters. Use the \"help\" parameter for more information."); + } else if (parameterList.length == 2){ + event.getChannel().sendMessage(getMarsImageURL(parameterList[0], parameterList[1])); + } else { + event.getChannel().sendMessage(getMarsImageURL(parameterList[0], parameterList[2], parameterList[1])); + } + } + } + } + + public String getMarsImageURL(String rover, String sol) { + return getMarsImageURL(rover, "", sol); + } + + public String getMarsImageURL(String rover, String camera, String sol) { + + String requestURL; + + if(camera.equals("")) { + requestURL = "https://api.nasa.gov/mars-photos/api/v1/rovers/" + rover.toLowerCase() + "/photos?" + "sol=" + sol + "&api_key=" + apiKey; + }else { + requestURL = "https://api.nasa.gov/mars-photos/api/v1/rovers/" + rover.toLowerCase() + "/photos?" + "sol=" + sol + "&camera=" + camera.toUpperCase() + "&api_key=" + apiKey; + } + + try { + URL url = new URL(requestURL); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("GET"); + JsonReader repoReader = Json.createReader(con.getInputStream()); + JsonObject userJSON = ((JsonObject) repoReader.read()); + con.disconnect(); + + MarsImageWrapper marsImageWrapper = gson.fromJson(userJSON.toString(), MarsImageWrapper.class); + + return marsImageWrapper.getPhotos().get(0).getImgSrc(); + + } catch (Exception e) { + return "A parameter was invalid or unavailable."; + } + } + + public String getMarsRoverManifest(String rover) { + String requestURL = "https://api.nasa.gov/mars-photos/api/v1/rovers/" + rover.toLowerCase() + "/?api_key=" + apiKey; + + try { + URL url = new URL(requestURL); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.setRequestMethod("GET"); + JsonReader repoReader = Json.createReader(con.getInputStream()); + JsonObject userJSON = ((JsonObject) repoReader.read()); + con.disconnect(); + + MarsRoverWrapper manifestRover = gson.fromJson(userJSON.toString(), MarsRoverWrapper .class); + ManifestRover manifest = manifestRover.getRover(); + + return "Name: " + manifest.getName() + ", Status: " + manifest.getStatus() + ", Launch Date: " + + manifest.getLaunchDate() + ", Landing Date: " + manifest.getLandingDate() + ", Max Sol: " + manifest.getMaxSol(); + + } catch (Exception e) { + return "A parameter was invalid."; + } + } +} diff --git a/src/main/java/org/jointheleague/modules/MazeGame.java b/src/main/java/org/jointheleague/modules/MazeGame.java index 76e1f77c..b972c5c0 100644 --- a/src/main/java/org/jointheleague/modules/MazeGame.java +++ b/src/main/java/org/jointheleague/modules/MazeGame.java @@ -30,7 +30,7 @@ public void handle(MessageCreateEvent event) throws APIException { System.out.println("Heard message: " + event.getMessageContent()); if (event.getMessageContent().contains(COMMAND) && !event.getMessageAuthor().isBotUser()) { if (event.getMessageContent().contains("start") || event.getMessageContent().contains("load")) { - String target = event.getMessageContent().substring(11).strip(); + String target = event.getMessageContent().substring(11); try { if(!target.equalsIgnoreCase("upload")) { diff --git a/src/main/java/org/jointheleague/modules/NumberGuesser.java b/src/main/java/org/jointheleague/modules/NumberGuesser.java new file mode 100644 index 00000000..77b74f8a --- /dev/null +++ b/src/main/java/org/jointheleague/modules/NumberGuesser.java @@ -0,0 +1,38 @@ +package org.jointheleague.modules; + +import net.aksingh.owmjapis.api.APIException; +import org.javacord.api.event.message.MessageCreateEvent; + + +import java.util.Random; + +public class NumberGuesser extends CustomMessageCreateListener { + public NumberGuesser(String channelName) { + super(channelName); + } + + @Override + public void handle(MessageCreateEvent event) throws APIException, InterruptedException { + String zero = "0"; + String one = "1"; + String two = "2"; + String three = "3"; + Random r2 = new Random(); + int ran = r2.nextInt(3); + + String messageContent2 = event.getMessageContent(); + String messageContent3 = event.getMessageContent(); + if (messageContent2.startsWith(zero) || messageContent2.startsWith(one) || messageContent2.startsWith(two) || messageContent2.startsWith(three)) { + event.getChannel().sendMessage("Answer: " + ran); + + if (messageContent3.startsWith("" + ran)){ + event.getChannel().sendMessage("Correct" + " Now resetting..."); + } + + else { + event.getChannel().sendMessage("Nope!" + " Now resetting..."); + } + + } + } +} diff --git a/src/main/java/org/jointheleague/modules/NumberRandom.java b/src/main/java/org/jointheleague/modules/NumberRandom.java new file mode 100644 index 00000000..28d0174e --- /dev/null +++ b/src/main/java/org/jointheleague/modules/NumberRandom.java @@ -0,0 +1,45 @@ +package org.jointheleague.modules; + +import net.aksingh.owmjapis.api.APIException; +import org.javacord.api.event.message.MessageCreateEvent; + + +import java.util.Random; + +public class NumberRandom extends CustomMessageCreateListener { + public NumberRandom(String channelName) { + super(channelName); + } + + @Override + public void handle(MessageCreateEvent event) throws APIException, InterruptedException { + String COMMAND = "!random"; + String messageContent = event.getMessageContent(); + if (messageContent.startsWith(COMMAND)) { + Random r = new Random(); + event.getChannel().sendMessage("Your random number is " + r.nextInt(1001)); + } + + String zero = "0"; + String one = "1"; + String two = "2"; + String three = "3"; + Random r2 = new Random(); + int ran = r2.nextInt(3); + + String messageContent2 = event.getMessageContent(); + String messageContent3 = event.getMessageContent(); + if (messageContent2.startsWith(zero) || messageContent2.startsWith(one) || messageContent2.startsWith(two) || messageContent2.startsWith(three)) { + event.getChannel().sendMessage("Answer: " + ran); + + if (messageContent3.startsWith("" + ran)){ + event.getChannel().sendMessage("Correct" + " Now resetting..."); + } + + else { + event.getChannel().sendMessage("Nope!" + " Now resetting..."); + } + + } + } +} diff --git a/src/main/java/org/jointheleague/modules/PingPong.java b/src/main/java/org/jointheleague/modules/PingPong.java new file mode 100644 index 00000000..c7c781ea --- /dev/null +++ b/src/main/java/org/jointheleague/modules/PingPong.java @@ -0,0 +1,24 @@ +package org.jointheleague.modules; + +import net.aksingh.owmjapis.api.APIException; +import org.javacord.api.event.message.MessageCreateEvent; +import org.jointheleague.modules.pojo.HelpEmbed; + +public class PingPong extends CustomMessageCreateListener { + private static final String prefix = "!pingpong"; + + public PingPong(String channelName) { + super(channelName); + this.helpEmbed = new HelpEmbed(prefix, "Pong!!!!"); + } + + @Override + public void handle(MessageCreateEvent event) throws APIException { + String content = event.getMessageContent(); + + if (content.isEmpty()) return; + if (content.toLowerCase().contentEquals(prefix)) { + event.getChannel().sendMessage("Pong!"); + } + } +} \ No newline at end of file diff --git a/src/main/java/org/jointheleague/modules/Poker.java b/src/main/java/org/jointheleague/modules/Poker.java new file mode 100644 index 00000000..f2ff803c --- /dev/null +++ b/src/main/java/org/jointheleague/modules/Poker.java @@ -0,0 +1,2048 @@ +package org.jointheleague.modules; + +import java.lang.reflect.Array; +import java.util.Random; + +import org.javacord.api.event.message.MessageCreateEvent; +import org.javacord.api.listener.message.MessageCreateListener; +import org.jointheleague.modules.pojo.HelpEmbed; + +import net.aksingh.owmjapis.api.APIException; + +public class Poker extends CustomMessageCreateListener { + + public Poker(String channelName) { + // TODO Auto-generated constructor stub + super(channelName); + helpEmbed = new HelpEmbed("!gamble poker", "This command starts a new poker game. You add a number after this command as the starting wager. The command !gamble bet with a number after it is the next wager continues the game. You can fold by using !gamble fold. If you run out of money, you can use !gamble work with a number after it to gain money in your balance."); + } + + private static final String command = "!gamble"; + int balance = 50; + int wager; + int totalBet; + int payment; + Random randCards = new Random(); + String[] cards = new String[52]; + String[] botAndMiddleCards = new String[7]; + String[] playerAndMiddleCards=new String[7]; + int[] usedCards = new int[9]; + int playerCard1; + int playerCard2; + int middleCard1; + int middleCard2; + int middleCard3; + int middleCard4; + int middleCard5; + int botCard1; + int botCard2; + int numberSameCards; + int playerScore; + int botScore; + int numberPairs; + int highestPairValue; + int lowestPairValue; + int highestTripleValue; + int playerPairValue; + int botPairValue; + int playerLowPair; + int botLowPair; + int playerHighCard; + int playerSecondHighCard; + int playerThirdHighCard; + int playerFourthHighCard; + int playerFifthHighCard; + int botHighCard; + int botSecondHighCard; + int botThirdHighCard; + int botFourthHighCard; + int botFifthHighCard; + boolean triple; + boolean userCooporates = false; + boolean isUsed = false; + boolean flop = true; + boolean turn = true; + boolean river=true; + boolean gameOver = true; + boolean playerWon; + boolean rewardGiven; + boolean tie=false; + boolean straight; + boolean number; + int highestCallChance = 0; + int botCallChance = 0; + int botSpades; + int botDiamonds; + int botHearts; + int botClubs; + int playerSpades; + int playerDiamonds; + int playerHearts; + int playerClubs; + int highestSuit; + int highCard; + int secondHighCard; + int thirdHighCard; + int fourthHighCard; + int fifthHighCard; + int highStraightCard; + boolean ace; + boolean two; + boolean three; + boolean four; + boolean five; + boolean six; + boolean seven; + boolean eight; + boolean nine; + boolean ten; + boolean jack; + boolean queen; + boolean king; + + @Override + public void handle(MessageCreateEvent event) throws APIException { + // TODO Auto-generated method stub + cards[0] = "ace of spades"; + cards[1] = "2 of spades"; + cards[2] = "3 of spades"; + cards[3] = "4 of spades"; + cards[4] = "5 of spades"; + cards[5] = "6 of spades"; + cards[6] = "7 of spades"; + cards[7] = "8 of spades"; + cards[8] = "9 of spades"; + cards[9] = "10 of spades"; + cards[10] = "jack of spades"; + cards[11] = "queen of spades"; + cards[12] = "king of spades"; + cards[13] = "ace of hearts"; + cards[14] = "2 of hearts"; + cards[15] = "3 of hearts"; + cards[16] = "4 of hearts"; + cards[17] = "5 of hearts"; + cards[18] = "6 of hearts"; + cards[19] = "7 of hearts"; + cards[20] = "8 of hearts"; + cards[21] = "9 of hearts"; + cards[22] = "10 of hearts"; + cards[23] = "jack of hearts"; + cards[24] = "queen of hearts"; + cards[25] = "king of hearts"; + cards[26] = "ace of diamonds"; + cards[27] = "2 of diamonds"; + cards[28] = "3 of diamonds"; + cards[29] = "4 of diamonds"; + cards[30] = "5 of diamonds"; + cards[31] = "6 of diamonds"; + cards[32] = "7 of diamonds"; + cards[33] = "8 of diamonds"; + cards[34] = "9 of diamonds"; + cards[35] = "10 of diamonds"; + cards[36] = "jack of diamonds"; + cards[37] = "queen of diamonds"; + cards[38] = "king of diamonds"; + cards[39] = "ace of clubs"; + cards[40] = "2 of clubs"; + cards[41] = "3 of clubs"; + cards[42] = "4 of clubs"; + cards[43] = "5 of clubs"; + cards[44] = "6 of clubs"; + cards[45] = "7 of clubs"; + cards[46] = "8 of clubs"; + cards[47] = "9 of clubs"; + cards[48] = "10 of clubs"; + cards[49] = "jack of clubs"; + cards[50] = "queen of clubs"; + cards[51] = "king of clubs"; + if (event.getMessageContent().contains(command)) { + String content = event.getMessageContent().replaceAll(" ", "").replace("!gamble", ""); + if (content.contains("poker")) { + number=false; + content = content.replace("poker", ""); + try { + wager = Integer.parseInt(content); + number=true; + } catch (Exception e) { + event.getChannel().sendMessage("Choose a number after the command to gamble"); + return; + } + if (gameOver == true) { + gameOver = false; + flop=true; + turn=true; + river=true; + rewardGiven=false; + totalBet = 0; + highestCallChance=0; + botCallChance=0; + numberPairs=0; + triple=false; + usedCards[0]=-1; + usedCards[1]=-1; + usedCards[2]=-1; + usedCards[3]=-1; + usedCards[4]=-1; + usedCards[5]=-1; + usedCards[6]=-1; + usedCards[7]=-1; + usedCards[8]=-1; + botAndMiddleCards[0]=""; + botAndMiddleCards[1]=""; + botAndMiddleCards[2]=""; + botAndMiddleCards[3]=""; + botAndMiddleCards[4]=""; + botAndMiddleCards[5]=""; + botAndMiddleCards[6]=""; + playerAndMiddleCards[0]=""; + playerAndMiddleCards[1]=""; + playerAndMiddleCards[2]=""; + playerAndMiddleCards[3]=""; + playerAndMiddleCards[4]=""; + playerAndMiddleCards[5]=""; + playerAndMiddleCards[6]=""; + botSpades=0; + botDiamonds=0; + botHearts=0; + botClubs=0; + playerSpades=0; + playerDiamonds=0; + playerHearts=0; + playerClubs=0; + + if (balance-wager < 0) { + event.getChannel().sendMessage("You don't have enough money to wager that much."); + gameOver=true; + } else if (wager<0) { + event.getChannel().sendMessage("Choose a positive number"); + gameOver=true; + } + else { + balance -= wager; + totalBet += wager; + event.getChannel().sendMessage("Your balance is " + balance); + // send photos of cards in the middle, its only text currently + middleCard1 = randCards.nextInt(52); + usedCards[0] = middleCard1; + middleCard2 = randCards.nextInt(52); + for (int i = 0; i < usedCards.length; i++) { + if (usedCards[i] == middleCard2) { + isUsed = true; + + } + while (isUsed == true) { + middleCard2 = randCards.nextInt(52); + isUsed = false; + } + } + usedCards[1] = middleCard2; + middleCard3 = randCards.nextInt(52); + for (int i = 0; i < usedCards.length; i++) { + if (usedCards[i] == middleCard3) { + isUsed = true; + + } + while (isUsed == true) { + middleCard3 = randCards.nextInt(52); + isUsed = false; + } + } + usedCards[2] = middleCard3; + event.getChannel().sendMessage("The middle cards are the " + cards[middleCard1] + ", the " + + cards[middleCard2] + " and the " + cards[middleCard3]); + + // send photo of player cards, its only text currently + playerCard1 = randCards.nextInt(52); + for (int i = 0; i < usedCards.length; i++) { + if (usedCards[i] == playerCard1) { + isUsed = true; + + } + while (isUsed == true) { + playerCard1 = randCards.nextInt(52); + isUsed = false; + } + } + usedCards[3] = playerCard1; + playerCard2 = randCards.nextInt(52); + for (int i = 0; i < usedCards.length; i++) { + if (usedCards[i] == playerCard2) { + isUsed = true; + + } + while (isUsed == true) { + playerCard2 = randCards.nextInt(52); + isUsed = false; + } + } + usedCards[4] = playerCard2; + event.getChannel().sendMessage( + "Your cards are the " + cards[playerCard1] + " and the " + cards[playerCard2]); + + botCard1 = randCards.nextInt(52); + for (int i = 0; i < usedCards.length; i++) { + if (usedCards[i] == botCard1) { + isUsed = true; + + } + while (isUsed == true) { + botCard1 = randCards.nextInt(52); + isUsed = false; + } + } + usedCards[5] = botCard1; + botCard2 = randCards.nextInt(52); + for (int i = 0; i < usedCards.length; i++) { + if (usedCards[i] == botCard2) { + isUsed = true; + + } + while (isUsed == true) { + botCard2 = randCards.nextInt(52); + isUsed = false; + } + } + usedCards[6] = botCard2; + + // shows bot's cards + System.out.println("Temporary: Bot's cards are the " + cards[botCard1] + " and the " + cards[botCard2]); + + if (cards[middleCard1].contains("ace")) { + botAndMiddleCards[0] = "ace"; + } else if (cards[middleCard1].contains("2")) { + botAndMiddleCards[0] = "2"; + } else if (cards[middleCard1].contains("3")) { + botAndMiddleCards[0] = "3"; + } else if (cards[middleCard1].contains("4")) { + botAndMiddleCards[0] = "4"; + } else if (cards[middleCard1].contains("5")) { + botAndMiddleCards[0] = "5"; + } else if (cards[middleCard1].contains("6")) { + botAndMiddleCards[0] = "6"; + } else if (cards[middleCard1].contains("7")) { + botAndMiddleCards[0] = "7"; + } else if (cards[middleCard1].contains("8")) { + botAndMiddleCards[0] = "8"; + } else if (cards[middleCard1].contains("9")) { + botAndMiddleCards[0] = "9"; + } else if (cards[middleCard1].contains("10")) { + botAndMiddleCards[0] = "10"; + } else if (cards[middleCard1].contains("jack")) { + botAndMiddleCards[0] = "jack"; + } else if (cards[middleCard1].contains("queen")) { + botAndMiddleCards[0] = "queen"; + } else if (cards[middleCard1].contains("king")) { + botAndMiddleCards[0] = "king"; + } + if (cards[middleCard1].contains("spades")) { + botSpades+=1; + } + else if(cards[middleCard1].contains("hearts")) { + botHearts+=1; + } + else if(cards[middleCard1].contains("diamonds")) { + botDiamonds+=1; + } + else if(cards[middleCard1].contains("clubs")) { + botClubs+=1; + } + + if (cards[middleCard2].contains("ace")) { + botAndMiddleCards[1] = "ace"; + } else if (cards[middleCard2].contains("2")) { + botAndMiddleCards[1] = "2"; + } else if (cards[middleCard2].contains("3")) { + botAndMiddleCards[1] = "3"; + } else if (cards[middleCard2].contains("4")) { + botAndMiddleCards[1] = "4"; + } else if (cards[middleCard2].contains("5")) { + botAndMiddleCards[1] = "5"; + } else if (cards[middleCard2].contains("6")) { + botAndMiddleCards[1] = "6"; + } else if (cards[middleCard2].contains("7")) { + botAndMiddleCards[1] = "7"; + } else if (cards[middleCard2].contains("8")) { + botAndMiddleCards[1] = "8"; + } else if (cards[middleCard2].contains("9")) { + botAndMiddleCards[1] = "9"; + } else if (cards[middleCard2].contains("10")) { + botAndMiddleCards[1] = "10"; + } else if (cards[middleCard2].contains("jack")) { + botAndMiddleCards[1] = "jack"; + } else if (cards[middleCard2].contains("queen")) { + botAndMiddleCards[1] = "queen"; + } else if (cards[middleCard2].contains("king")) { + botAndMiddleCards[1] = "king"; + } + if (cards[middleCard2].contains("spades")) { + botSpades+=1; + } + else if(cards[middleCard2].contains("hearts")) { + botHearts+=1; + } + else if(cards[middleCard2].contains("diamonds")) { + botDiamonds+=1; + } + else if(cards[middleCard2].contains("clubs")) { + botClubs+=1; + } + + if (cards[middleCard3].contains("ace")) { + botAndMiddleCards[2] = "ace"; + } else if (cards[middleCard3].contains("2")) { + botAndMiddleCards[2] = "2"; + } else if (cards[middleCard3].contains("3")) { + botAndMiddleCards[2] = "3"; + } else if (cards[middleCard3].contains("4")) { + botAndMiddleCards[2] = "4"; + } else if (cards[middleCard3].contains("5")) { + botAndMiddleCards[2] = "5"; + } else if (cards[middleCard3].contains("6")) { + botAndMiddleCards[2] = "6"; + } else if (cards[middleCard3].contains("7")) { + botAndMiddleCards[2] = "7"; + } else if (cards[middleCard3].contains("8")) { + botAndMiddleCards[2] = "8"; + } else if (cards[middleCard3].contains("9")) { + botAndMiddleCards[2] = "9"; + } else if (cards[middleCard3].contains("10")) { + botAndMiddleCards[2] = "10"; + } else if (cards[middleCard3].contains("jack")) { + botAndMiddleCards[2] = "jack"; + } else if (cards[middleCard3].contains("queen")) { + botAndMiddleCards[2] = "queen"; + } else if (cards[middleCard3].contains("king")) { + botAndMiddleCards[2] = "king"; + } + if (cards[middleCard3].contains("spades")) { + botSpades+=1; + } + else if(cards[middleCard3].contains("hearts")) { + botHearts+=1; + } + else if(cards[middleCard3].contains("diamonds")) { + botDiamonds+=1; + } + else if(cards[middleCard3].contains("clubs")) { + botClubs+=1; + } + + if (cards[botCard1].contains("ace")) { + botAndMiddleCards[3] = "ace"; + } else if (cards[botCard1].contains("2")) { + botAndMiddleCards[3] = "2"; + } else if (cards[botCard1].contains("3")) { + botAndMiddleCards[3] = "3"; + } else if (cards[botCard1].contains("4")) { + botAndMiddleCards[3] = "4"; + } else if (cards[botCard1].contains("5")) { + botAndMiddleCards[3] = "5"; + } else if (cards[botCard1].contains("6")) { + botAndMiddleCards[3] = "6"; + } else if (cards[botCard1].contains("7")) { + botAndMiddleCards[3] = "7"; + } else if (cards[botCard1].contains("8")) { + botAndMiddleCards[3] = "8"; + } else if (cards[botCard1].contains("9")) { + botAndMiddleCards[3] = "9"; + } else if (cards[botCard1].contains("10")) { + botAndMiddleCards[3] = "10"; + } else if (cards[botCard1].contains("jack")) { + botAndMiddleCards[3] = "jack"; + } else if (cards[botCard1].contains("queen")) { + botAndMiddleCards[3] = "queen"; + } else if (cards[botCard1].contains("king")) { + botAndMiddleCards[3] = "king"; + } + if (cards[botCard1].contains("spades")) { + botSpades+=1; + } + else if(cards[botCard1].contains("hearts")) { + botHearts+=1; + } + else if(cards[botCard1].contains("diamonds")) { + botDiamonds+=1; + } + else if(cards[botCard1].contains("clubs")) { + botClubs+=1; + } + + if (cards[botCard2].contains("ace")) { + botAndMiddleCards[4] = "ace"; + } else if (cards[botCard2].contains("2")) { + botAndMiddleCards[4] = "2"; + } else if (cards[botCard2].contains("3")) { + botAndMiddleCards[4] = "3"; + } else if (cards[botCard2].contains("4")) { + botAndMiddleCards[4] = "4"; + } else if (cards[botCard2].contains("5")) { + botAndMiddleCards[4] = "5"; + } else if (cards[botCard2].contains("6")) { + botAndMiddleCards[4] = "6"; + } else if (cards[botCard2].contains("7")) { + botAndMiddleCards[4] = "7"; + } else if (cards[botCard2].contains("8")) { + botAndMiddleCards[4] = "8"; + } else if (cards[botCard2].contains("9")) { + botAndMiddleCards[4] = "9"; + } else if (cards[botCard2].contains("10")) { + botAndMiddleCards[4] = "10"; + } else if (cards[botCard2].contains("jack")) { + botAndMiddleCards[4] = "jack"; + } else if (cards[botCard2].contains("queen")) { + botAndMiddleCards[4] = "queen"; + } else if (cards[botCard2].contains("king")) { + botAndMiddleCards[4] = "king"; + } + if (cards[botCard2].contains("spades")) { + botSpades+=1; + } + else if(cards[botCard2].contains("hearts")) { + botHearts+=1; + } + else if(cards[botCard2].contains("diamonds")) { + botDiamonds+=1; + } + else if(cards[botCard2].contains("clubs")) { + botClubs+=1; + } + System.out.println("The bot has " + botAndMiddleCards[0]+", "+botAndMiddleCards[1]+", " + +botAndMiddleCards[2]+", "+botAndMiddleCards[3]+", and "+botAndMiddleCards[4]); + event.getChannel().sendMessage("Your hand is now the " +cards[playerCard1]+", "+cards[playerCard2]+", "+cards[middleCard1]+", "+cards[middleCard2]+", and "+cards[middleCard3]); + event.getChannel().sendMessage("How much would you like to bet"); + } + } + else { + event.getChannel().sendMessage("You already have a game running."); + } + } + else if(content.contains("fold") && !gameOver) { + event.getChannel().sendMessage("You folded. Your balance is now "+balance); + gameOver=true; + } + else if (content.contains("bet") && flop && !gameOver) { + content = content.replace("bet", ""); + try { + wager = Integer.parseInt(content); + } catch (Exception e) { + event.getChannel().sendMessage("Choose a number after the command to gamble"); + return; + } + System.out.println(totalBet); + if (balance-wager < 0) { + event.getChannel().sendMessage("You don't have enough money to wager that much."); + gameOver=true; + } else if(wager<0) { + event.getChannel().sendMessage("Choose a positive number"); + } + else { + flop = false; + balance -= wager; + totalBet += wager; + event.getChannel().sendMessage("Your balance is " + balance); + highestSuit=0; + highestSuit=botSpades; + if(botDiamonds>highestSuit) { + highestSuit=botDiamonds; + } + if(botHearts>highestSuit) { + highestSuit=botHearts; + } + if(botSpades>highestSuit) { + highestSuit=botSpades; + } + + highestCallChance = botAlgorithm(botAndMiddleCards, highestSuit); + + + if (500 > highestCallChance) { + highestCallChance = 500; + } + botCallChance = highestCallChance; + Random callRandom = new Random(); + int i = callRandom.nextInt(750); + if (botCallChance >= i) { + // bot calls + System.out.println( + "Bot calls. Bot chance of calling was " + botCallChance + ". The random was " + i); + middleCard4 = randCards.nextInt(52); + event.getChannel().sendMessage("Bot calls."); + for (int k = 0; k < usedCards.length; k++) { + if (usedCards[k] == middleCard4) { + isUsed = true; + + } + while (isUsed == true) { + middleCard4 = randCards.nextInt(52); + isUsed = false; + } + } + usedCards[7] = middleCard4; + event.getChannel() + .sendMessage("The middle cards are now the " + cards[middleCard1] + ", the " + + cards[middleCard2] + ", the " + cards[middleCard3] + " and the " + + cards[middleCard4]); + event.getChannel().sendMessage("Your hand is now the " +cards[playerCard1]+", "+cards[playerCard2]+", "+cards[middleCard1]+", "+cards[middleCard2]+", "+cards[middleCard3]+", and "+cards[middleCard4]); + + if (cards[middleCard4].contains("ace")) { + botAndMiddleCards[5] = "ace"; + } else if (cards[middleCard4].contains("2")) { + botAndMiddleCards[5] = "2"; + } else if (cards[middleCard4].contains("3")) { + botAndMiddleCards[5] = "3"; + } else if (cards[middleCard4].contains("4")) { + botAndMiddleCards[5] = "4"; + } else if (cards[middleCard4].contains("5")) { + botAndMiddleCards[5] = "5"; + } else if (cards[middleCard4].contains("6")) { + botAndMiddleCards[5] = "6"; + } else if (cards[middleCard4].contains("7")) { + botAndMiddleCards[5] = "7"; + } else if (cards[middleCard4].contains("8")) { + botAndMiddleCards[5] = "8"; + } else if (cards[middleCard4].contains("9")) { + botAndMiddleCards[5] = "9"; + } else if (cards[middleCard4].contains("10")) { + botAndMiddleCards[5] = "10"; + } else if (cards[middleCard4].contains("jack")) { + botAndMiddleCards[5] = "jack"; + } else if (cards[middleCard4].contains("queen")) { + botAndMiddleCards[5] = "queen"; + } else if (cards[middleCard4].contains("king")) { + botAndMiddleCards[5] = "king"; + } + if (cards[middleCard4].contains("spades")) { + botSpades+=1; + } + else if(cards[middleCard4].contains("hearts")) { + botHearts+=1; + } + else if(cards[middleCard4].contains("diamonds")) { + botDiamonds+=1; + } + else if(cards[middleCard4].contains("clubs")) { + botClubs+=1; + } + + System.out.println("The bot has "+botAndMiddleCards[0]+", "+botAndMiddleCards[1] + +", "+botAndMiddleCards[2]+", "+botAndMiddleCards[3]+", "+botAndMiddleCards[4] + +" and "+botAndMiddleCards[5]); + event.getChannel().sendMessage("How much would you like to bet"); + } else { + balance += totalBet * 2; + event.getChannel().sendMessage( + "The bot folded, you win " + ((totalBet * 2)-wager) + ". Your balance is now " + balance); + gameOver = true; + rewardGiven=true; + } + } + } else if (content.contains("bet") && turn && !gameOver) { + content = content.replace("bet", ""); + try { + wager = Integer.parseInt(content); + } catch (Exception e) { + event.getChannel().sendMessage("Choose a number after the command to gamble"); + return; + } + System.out.println(totalBet); + if (balance-wager < 0) { + event.getChannel().sendMessage("You don't have enough money to wager that much."); + gameOver=true; + } else if(wager<0) { + event.getChannel().sendMessage("Choose a positive number."); + } + else { + turn = false; + balance -= wager; + totalBet += wager; + event.getChannel().sendMessage("Your balance is " + balance); + highestSuit=0; + highestSuit=botSpades; + if(botDiamonds>highestSuit) { + highestSuit=botDiamonds; + } + if(botHearts>highestSuit) { + highestSuit=botHearts; + } + if(botSpades>highestSuit) { + highestSuit=botSpades; + } + + highestCallChance = botAlgorithm(botAndMiddleCards, highestSuit); + + // add more ways of having good hand here, in method + + if (500 > highestCallChance) { + highestCallChance = 500; + } + botCallChance = highestCallChance; + Random callRandom = new Random(); + int i = callRandom.nextInt(750); + if (botCallChance >= i) { + // bot calls + System.out.println("Bot calls. Bot chance of calling was " + botCallChance + ". The random was " + i); + event.getChannel().sendMessage("Bot calls."); + middleCard5 = randCards.nextInt(52); + for (int k = 0; k < usedCards.length; k++) { + if (usedCards[k] == middleCard5) { + isUsed = true; + + } + while (isUsed == true) { + middleCard5 = randCards.nextInt(52); + isUsed = false; + } + } + usedCards[8] = middleCard5; + event.getChannel() + .sendMessage("The middle cards are now the " + cards[middleCard1] + ", the " + + cards[middleCard2] + ", the " + cards[middleCard3] + " , the " + + cards[middleCard4] + " and the " + cards[middleCard5]); + + if (cards[middleCard5].contains("ace")) { + botAndMiddleCards[6] = "ace"; + } else if (cards[middleCard5].contains("2")) { + botAndMiddleCards[6] = "2"; + } else if (cards[middleCard5].contains("3")) { + botAndMiddleCards[6] = "3"; + } else if (cards[middleCard5].contains("4")) { + botAndMiddleCards[6] = "4"; + } else if (cards[middleCard5].contains("5")) { + botAndMiddleCards[6] = "5"; + } else if (cards[middleCard5].contains("6")) { + botAndMiddleCards[6] = "6"; + } else if (cards[middleCard5].contains("7")) { + botAndMiddleCards[6] = "7"; + } else if (cards[middleCard5].contains("8")) { + botAndMiddleCards[6] = "8"; + } else if (cards[middleCard5].contains("9")) { + botAndMiddleCards[6] = "9"; + } else if (cards[middleCard5].contains("10")) { + botAndMiddleCards[6] = "10"; + } else if (cards[middleCard5].contains("jack")) { + botAndMiddleCards[6] = "jack"; + } else if (cards[middleCard5].contains("queen")) { + botAndMiddleCards[6] = "queen"; + } else if (cards[middleCard5].contains("king")) { + botAndMiddleCards[6] = "king"; + } + if (cards[middleCard5].contains("spades")) { + botSpades+=1; + } + else if(cards[middleCard5].contains("hearts")) { + botHearts+=1; + } + else if(cards[middleCard5].contains("diamonds")) { + botDiamonds+=1; + } + else if(cards[middleCard5].contains("clubs")) { + botClubs+=1; + } + + System.out.println("The bot has "+botAndMiddleCards[0]+", "+botAndMiddleCards[1] + +", "+botAndMiddleCards[2]+", "+botAndMiddleCards[3]+", "+botAndMiddleCards[4] + +", "+botAndMiddleCards[5]+" and "+botAndMiddleCards[6]); + event.getChannel().sendMessage("Your hand is now the " +cards[playerCard1]+", "+cards[playerCard2]+", "+cards[middleCard1]+", "+cards[middleCard2]+", "+cards[middleCard3]+", "+cards[middleCard4]+", and "+cards[middleCard5]); + event.getChannel().sendMessage("How much would you like to bet?"); + } else { + balance += totalBet * 2; + event.getChannel().sendMessage( + "The bot folded, you win " + ((totalBet * 2)-wager) + ". Your balance is now " + balance); + gameOver = true; + rewardGiven=true; + } + } + }else if (content.contains("bet") && river && !gameOver) { + content = content.replace("bet", ""); + try { + wager = Integer.parseInt(content); + } catch (Exception e) { + event.getChannel().sendMessage("Choose a number after the command to gamble"); + return; + } + System.out.println(totalBet); + if (balance-wager < 0) { + event.getChannel().sendMessage("You don't have enough money to wager that much."); + gameOver=true; + } else if(wager<0) { + event.getChannel().sendMessage("Choose a positive number."); + } + else { + river = false; + balance -= wager; + totalBet += wager; + event.getChannel().sendMessage("Your balance is " + balance); + event.getChannel().sendMessage("Bot calls."); + + if (cards[middleCard1].contains("ace")) { + playerAndMiddleCards[0] = "ace"; + } else if (cards[middleCard1].contains("2")) { + playerAndMiddleCards[0] = "2"; + } else if (cards[middleCard1].contains("3")) { + playerAndMiddleCards[0] = "3"; + } else if (cards[middleCard1].contains("4")) { + playerAndMiddleCards[0] = "4"; + } else if (cards[middleCard1].contains("5")) { + playerAndMiddleCards[0] = "5"; + } else if (cards[middleCard1].contains("6")) { + playerAndMiddleCards[0] = "6"; + } else if (cards[middleCard1].contains("7")) { + playerAndMiddleCards[0] = "7"; + } else if (cards[middleCard1].contains("8")) { + playerAndMiddleCards[0] = "8"; + } else if (cards[middleCard1].contains("9")) { + playerAndMiddleCards[0] = "9"; + } else if (cards[middleCard1].contains("10")) { + playerAndMiddleCards[0] = "10"; + } else if (cards[middleCard1].contains("jack")) { + playerAndMiddleCards[0] = "jack"; + } else if (cards[middleCard1].contains("queen")) { + playerAndMiddleCards[0] = "queen"; + } else if (cards[middleCard1].contains("king")) { + playerAndMiddleCards[0] = "king"; + } + if (cards[middleCard1].contains("spades")) { + playerSpades+=1; + } + else if(cards[middleCard1].contains("hearts")) { + playerHearts+=1; + } + else if(cards[middleCard1].contains("diamonds")) { + playerDiamonds+=1; + } + else if(cards[middleCard1].contains("clubs")) { + playerClubs+=1; + } + + if (cards[middleCard2].contains("ace")) { + playerAndMiddleCards[1] = "ace"; + } else if (cards[middleCard2].contains("2")) { + playerAndMiddleCards[1] = "2"; + } else if (cards[middleCard2].contains("3")) { + playerAndMiddleCards[1] = "3"; + } else if (cards[middleCard2].contains("4")) { + playerAndMiddleCards[1] = "4"; + } else if (cards[middleCard2].contains("5")) { + playerAndMiddleCards[1] = "5"; + } else if (cards[middleCard2].contains("6")) { + playerAndMiddleCards[1] = "6"; + } else if (cards[middleCard2].contains("7")) { + playerAndMiddleCards[1] = "7"; + } else if (cards[middleCard2].contains("8")) { + playerAndMiddleCards[1] = "8"; + } else if (cards[middleCard2].contains("9")) { + playerAndMiddleCards[1] = "9"; + } else if (cards[middleCard2].contains("10")) { + playerAndMiddleCards[1] = "10"; + } else if (cards[middleCard2].contains("jack")) { + playerAndMiddleCards[1] = "jack"; + } else if (cards[middleCard2].contains("queen")) { + playerAndMiddleCards[1] = "queen"; + } else if (cards[middleCard2].contains("king")) { + playerAndMiddleCards[1] = "king"; + } + if (cards[middleCard2].contains("spades")) { + playerSpades+=1; + } + else if(cards[middleCard2].contains("hearts")) { + playerHearts+=1; + } + else if(cards[middleCard2].contains("diamonds")) { + playerDiamonds+=1; + } + else if(cards[middleCard2].contains("clubs")) { + playerClubs+=1; + } + if (cards[middleCard3].contains("ace")) { + playerAndMiddleCards[2] = "ace"; + } else if (cards[middleCard3].contains("2")) { + playerAndMiddleCards[2] = "2"; + } else if (cards[middleCard3].contains("3")) { + playerAndMiddleCards[2] = "3"; + } else if (cards[middleCard3].contains("4")) { + playerAndMiddleCards[2] = "4"; + } else if (cards[middleCard3].contains("5")) { + playerAndMiddleCards[2] = "5"; + } else if (cards[middleCard3].contains("6")) { + playerAndMiddleCards[2] = "6"; + } else if (cards[middleCard3].contains("7")) { + playerAndMiddleCards[2] = "7"; + } else if (cards[middleCard3].contains("8")) { + playerAndMiddleCards[2] = "8"; + } else if (cards[middleCard3].contains("9")) { + playerAndMiddleCards[2] = "9"; + } else if (cards[middleCard3].contains("10")) { + playerAndMiddleCards[2] = "10"; + } else if (cards[middleCard3].contains("jack")) { + playerAndMiddleCards[2] = "jack"; + } else if (cards[middleCard3].contains("queen")) { + playerAndMiddleCards[2] = "queen"; + } else if (cards[middleCard3].contains("king")) { + playerAndMiddleCards[2] = "king"; + } + if (cards[middleCard3].contains("spades")) { + playerSpades+=1; + } + else if(cards[middleCard3].contains("hearts")) { + playerHearts+=1; + } + else if(cards[middleCard3].contains("diamonds")) { + playerDiamonds+=1; + } + else if(cards[middleCard3].contains("clubs")) { + playerClubs+=1; + } + if (cards[playerCard1].contains("ace")) { + playerAndMiddleCards[3] = "ace"; + } else if (cards[playerCard1].contains("2")) { + playerAndMiddleCards[3] = "2"; + } else if (cards[playerCard1].contains("3")) { + playerAndMiddleCards[3] = "3"; + } else if (cards[playerCard1].contains("4")) { + playerAndMiddleCards[3] = "4"; + } else if (cards[playerCard1].contains("5")) { + playerAndMiddleCards[3] = "5"; + } else if (cards[playerCard1].contains("6")) { + playerAndMiddleCards[3] = "6"; + } else if (cards[playerCard1].contains("7")) { + playerAndMiddleCards[3] = "7"; + } else if (cards[playerCard1].contains("8")) { + playerAndMiddleCards[3] = "8"; + } else if (cards[playerCard1].contains("9")) { + playerAndMiddleCards[3] = "9"; + } else if (cards[playerCard1].contains("10")) { + playerAndMiddleCards[3] = "10"; + } else if (cards[playerCard1].contains("jack")) { + playerAndMiddleCards[3] = "jack"; + } else if (cards[playerCard1].contains("queen")) { + playerAndMiddleCards[3] = "queen"; + } else if (cards[playerCard1].contains("king")) { + playerAndMiddleCards[3] = "king"; + } + if (cards[playerCard1].contains("spades")) { + playerSpades+=1; + } + else if(cards[playerCard1].contains("hearts")) { + playerHearts+=1; + } + else if(cards[playerCard1].contains("diamonds")) { + playerDiamonds+=1; + } + else if(cards[playerCard1].contains("clubs")) { + playerClubs+=1; + } + if (cards[playerCard2].contains("ace")) { + playerAndMiddleCards[4] = "ace"; + } else if (cards[playerCard2].contains("2")) { + playerAndMiddleCards[4] = "2"; + } else if (cards[playerCard2].contains("3")) { + playerAndMiddleCards[4] = "3"; + } else if (cards[playerCard2].contains("4")) { + playerAndMiddleCards[4] = "4"; + } else if (cards[playerCard2].contains("5")) { + playerAndMiddleCards[4] = "5"; + } else if (cards[playerCard2].contains("6")) { + playerAndMiddleCards[4] = "6"; + } else if (cards[playerCard2].contains("7")) { + playerAndMiddleCards[4] = "7"; + } else if (cards[playerCard2].contains("8")) { + playerAndMiddleCards[4] = "8"; + } else if (cards[playerCard2].contains("9")) { + playerAndMiddleCards[4] = "9"; + } else if (cards[playerCard2].contains("10")) { + playerAndMiddleCards[4] = "10"; + } else if (cards[playerCard2].contains("jack")) { + playerAndMiddleCards[4] = "jack"; + } else if (cards[playerCard2].contains("queen")) { + playerAndMiddleCards[4] = "queen"; + } else if (cards[playerCard2].contains("king")) { + playerAndMiddleCards[4] = "king"; + } + if (cards[playerCard2].contains("spades")) { + playerSpades+=1; + } + else if(cards[playerCard2].contains("hearts")) { + playerHearts+=1; + } + else if(cards[playerCard2].contains("diamonds")) { + playerDiamonds+=1; + } + else if(cards[playerCard2].contains("clubs")) { + playerClubs+=1; + } + if (cards[middleCard4].contains("ace")) { + playerAndMiddleCards[5] = "ace"; + } else if (cards[middleCard4].contains("2")) { + playerAndMiddleCards[5] = "2"; + } else if (cards[middleCard4].contains("3")) { + playerAndMiddleCards[5] = "3"; + } else if (cards[middleCard4].contains("4")) { + playerAndMiddleCards[5] = "4"; + } else if (cards[middleCard4].contains("5")) { + playerAndMiddleCards[5] = "5"; + } else if (cards[middleCard4].contains("6")) { + playerAndMiddleCards[5] = "6"; + } else if (cards[middleCard4].contains("7")) { + playerAndMiddleCards[5] = "7"; + } else if (cards[middleCard4].contains("8")) { + playerAndMiddleCards[5] = "8"; + } else if (cards[middleCard4].contains("9")) { + playerAndMiddleCards[5] = "9"; + } else if (cards[middleCard4].contains("10")) { + playerAndMiddleCards[5] = "10"; + } else if (cards[middleCard4].contains("jack")) { + playerAndMiddleCards[5] = "jack"; + } else if (cards[middleCard4].contains("queen")) { + playerAndMiddleCards[5] = "queen"; + } else if (cards[middleCard4].contains("king")) { + playerAndMiddleCards[5] = "king"; + } + if (cards[middleCard4].contains("spades")) { + playerSpades+=1; + } + else if(cards[middleCard4].contains("hearts")) { + playerHearts+=1; + } + else if(cards[middleCard4].contains("diamonds")) { + playerDiamonds+=1; + } + else if(cards[middleCard4].contains("clubs")) { + playerClubs+=1; + } + if (cards[middleCard5].contains("ace")) { + playerAndMiddleCards[6] = "ace"; + } else if (cards[middleCard5].contains("2")) { + playerAndMiddleCards[6] = "2"; + } else if (cards[middleCard5].contains("3")) { + playerAndMiddleCards[6] = "3"; + } else if (cards[middleCard5].contains("4")) { + playerAndMiddleCards[6] = "4"; + } else if (cards[middleCard5].contains("5")) { + playerAndMiddleCards[6] = "5"; + } else if (cards[middleCard5].contains("6")) { + playerAndMiddleCards[6] = "6"; + } else if (cards[middleCard5].contains("7")) { + playerAndMiddleCards[6] = "7"; + } else if (cards[middleCard5].contains("8")) { + playerAndMiddleCards[6] = "8"; + } else if (cards[middleCard5].contains("9")) { + playerAndMiddleCards[6] = "9"; + } else if (cards[middleCard5].contains("10")) { + playerAndMiddleCards[6] = "10"; + } else if (cards[middleCard5].contains("jack")) { + playerAndMiddleCards[6] = "jack"; + } else if (cards[middleCard5].contains("queen")) { + playerAndMiddleCards[6] = "queen"; + } else if (cards[middleCard5].contains("king")) { + playerAndMiddleCards[6] = "king"; + } + if (cards[middleCard5].contains("spades")) { + playerSpades+=1; + } + else if(cards[middleCard5].contains("hearts")) { + playerHearts+=1; + } + else if(cards[middleCard5].contains("diamonds")) { + playerDiamonds+=1; + } + else if(cards[middleCard5].contains("clubs")) { + playerClubs+=1; + } + + //test certain hands + /*botAndMiddleCards[0]="7"; + botAndMiddleCards[1]="8"; + botAndMiddleCards[2]="9"; + botAndMiddleCards[3]="jack"; + botAndMiddleCards[4]="queen"; + botAndMiddleCards[5]="king"; + botAndMiddleCards[6]="ace"; + + playerAndMiddleCards[0]="7"; + playerAndMiddleCards[1]="8"; + playerAndMiddleCards[2]="10"; + playerAndMiddleCards[3]="jack"; + playerAndMiddleCards[4]="queen"; + playerAndMiddleCards[5]="king"; + playerAndMiddleCards[6]="ace"; + */ + + + if(!rewardGiven) { + event.getChannel().sendMessage("Your hand is now the " +cards[playerCard1]+", "+cards[playerCard2]+", "+cards[middleCard1]+", "+cards[middleCard2]+", "+cards[middleCard3]+", "+cards[middleCard4]+", and "+cards[middleCard5]); + event.getChannel().sendMessage("The bot's final hand has the "+cards[botCard1]+", "+cards[botCard2]+", "+cards[middleCard1]+", "+cards[middleCard2]+", "+cards[middleCard3]+", "+cards[middleCard4]+", and "+cards[middleCard5]); + playerWon=playerWins(playerAndMiddleCards, botAndMiddleCards); + if(playerWon) { + balance += totalBet * 2; + event.getChannel().sendMessage( + "You have the better hand. You won " + ((totalBet * 2)) + ". Your balance is now " + balance); + gameOver = true; + } + else if(!playerWon) { + if(tie) { + balance+=totalBet; + event.getChannel().sendMessage("It is a tie. You get back "+totalBet+". Your balance is now "+balance); + } + else { + event.getChannel().sendMessage("The bot has the better hand. You win nothing. Your balance is now "+balance); + } + } + } + else { + System.out.println("error"); + } + } + } + else if(event.getMessageContent().contains("work")) { + String work = event.getMessageContent().replaceAll(" ", "").replace("!gamble", "").replace("work", ""); + try { + payment=Integer.parseInt(work); + } + catch (Exception e){ + event.getChannel().sendMessage("Choose a number after the command to gamble"); + return; + } + balance+=payment; + event.getChannel().sendMessage("Your balance is now "+balance); + } + } + } + + public int botAlgorithm(String[] botAndMiddleCards, int suits) { + highestCallChance = 0; + numberSameCards = 0; + numberPairs=0; + highestPairValue=0; + lowestPairValue=0; + highestTripleValue=0; + highCard=0; + secondHighCard=0; + thirdHighCard=0; + fourthHighCard=0; + fifthHighCard=0; + highStraightCard=0; + straight=false; + ace=false; + two=false; + three=false; + four=false; + five=false; + six=false; + seven=false; + eight=false; + nine=false; + ten=false; + jack=false; + queen=false; + king=false; + + for (int j = 0; j < botAndMiddleCards.length; j++) { + if(botAndMiddleCards[j]=="ace") { + ace=true; + } + else if(botAndMiddleCards[j]=="2") { + two=true; + } + else if(botAndMiddleCards[j]=="3") { + three=true; + } + else if(botAndMiddleCards[j]=="4") { + four=true; + } + else if(botAndMiddleCards[j]=="5") { + five=true; + } + else if(botAndMiddleCards[j]=="6") { + six=true; + } + else if(botAndMiddleCards[j]=="7") { + seven=true; + } + else if(botAndMiddleCards[j]=="8") { + eight=true; + } + else if(botAndMiddleCards[j]=="9") { + nine=true; + } + else if(botAndMiddleCards[j]=="10") { + ten=true; + } + else if(botAndMiddleCards[j]=="jack") { + jack=true; + } + else if(botAndMiddleCards[j]=="queen") { + queen=true; + } + else if(botAndMiddleCards[j]=="king") { + king=true; + } + if(ace) { + if(two) { + if(three) { + if(four) { + if(five) { + if(740>highestCallChance) { + highestCallChance=740; + straight=true; + highStraightCard=1; + } + } + } + } + } + } + else if(two) { + if(three) { + if(four) { + if(five) { + if(six) { + if(741>highestCallChance) { + highestCallChance=741; + straight=true; + highStraightCard=2; + } + } + } + } + } + } + else if(three) { + if(four) { + if(five) { + if(six) { + if(seven) { + if(742>highestCallChance) { + highestCallChance=742; + straight=true; + highStraightCard=3; + } + } + } + } + } + } + else if(four) { + if(five) { + if(six) { + if(seven) { + if(eight) { + if(743>highestCallChance) { + highestCallChance=743; + straight=true; + highStraightCard=4; + } + } + } + } + } + } + else if(five) { + if(six) { + if(seven) { + if(eight) { + if(nine) { + if(744>highestCallChance) { + highestCallChance=744; + straight=true; + highStraightCard=5; + } + } + } + } + } + } + else if(six) { + if(seven) { + if(eight) { + if(nine) { + if(ten) { + if(745>highestCallChance) { + highestCallChance=745; + straight=true; + highStraightCard=6; + } + } + } + } + } + } + else if(seven) { + if(eight) { + if(nine) { + if(ten) { + if(jack) { + if(746>highestCallChance) { + highestCallChance=746; + straight=true; + highStraightCard=7; + } + } + } + } + } + } + else if(eight) { + if(nine) { + if(ten) { + if(jack) { + if(queen) { + if(747>highestCallChance) { + highestCallChance=747; + straight=true; + highStraightCard=8; + } + } + } + } + } + } + else if(nine) { + if(ten) { + if(jack) { + if(queen) { + if(king) { + if(748>highestCallChance) { + highestCallChance=748; + straight=true; + highStraightCard=9; + } + } + } + } + } + } + else if(ten) { + if(jack) { + if(queen) { + if(king) { + if(ace) { + if(749>highestCallChance) { + highestCallChance=749; + straight=true; + highStraightCard=10; + } + } + } + } + } + } + } + + + + + + + for (int j = 0; j < botAndMiddleCards.length; j++) { + if(secondHighCard==12) { + System.out.println(""); + } + if (botAndMiddleCards[j].equals("ace")) { + numberSameCards += 1; + if(13>highCard) { + highCard=13; + } + else if(13>secondHighCard) { + secondHighCard=13; + } + else if(13>thirdHighCard) { + thirdHighCard=13; + } + else if(13>fourthHighCard) { + fourthHighCard=13; + } + else if (13>fifthHighCard) { + fifthHighCard=13; + } + if(513>highestCallChance) { + highestCallChance=513; + } + } + } + if (numberSameCards == 2) { + if (712 > highestCallChance) { + highestCallChance = 712; + numberPairs+=1; + if(13>highestPairValue) { + highestPairValue=13; + } + else { + lowestPairValue=13; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 739; + triple=true; + highestTripleValue=13; + } + else if(numberSameCards == 4) { + highestCallChance=790; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("king")) { + numberSameCards += 1; + if(12>highCard) { + highCard=12; + } + else if(12>secondHighCard) { + secondHighCard=12; + } + else if(12>thirdHighCard) { + thirdHighCard=12; + } + else if(12>fourthHighCard) { + fourthHighCard=12; + } + else if (12>fifthHighCard) { + fifthHighCard=12; + } + if(512>highestCallChance) { + highestCallChance=512; + } + } + } + if (numberSameCards == 2) { + if (711 > highestCallChance) { + highestCallChance = 711; + numberPairs+=1; + if(12>highestPairValue) { + highestPairValue=12; + } + else { + lowestPairValue=12; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 738; + triple=true; + highestTripleValue=12; + } + else if(numberSameCards == 4) { + highestCallChance=789; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("queen")) { + numberSameCards += 1; + if(11>highCard) { + highCard=11; + } + else if(11>secondHighCard) { + secondHighCard=11; + } + else if(11>thirdHighCard) { + thirdHighCard=11; + } + else if(11>fourthHighCard) { + fourthHighCard=11; + } + else if (11>fifthHighCard) { + fifthHighCard=11; + } + if(511>highestCallChance) { + highestCallChance=511; + } + } + } + if (numberSameCards == 2) { + if (710 > highestCallChance) { + highestCallChance = 710; + numberPairs+=1; + if(11>highestPairValue) { + highestPairValue=11; + } + else { + lowestPairValue=11; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 737; + triple=true; + highestTripleValue=11; + } + else if(numberSameCards == 4) { + highestCallChance=788; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("jack")) { + numberSameCards += 1; + if(10>highCard) { + highCard=10; + } + else if(10>secondHighCard) { + secondHighCard=10; + } + else if(10>thirdHighCard) { + thirdHighCard=10; + } + else if(10>fourthHighCard) { + fourthHighCard=10; + } + else if (10>fifthHighCard) { + fifthHighCard=10; + } + if(510>highestCallChance) { + highestCallChance=510; + } + } + } + if (numberSameCards == 2) { + if (709 > highestCallChance) { + highestCallChance = 709; + numberPairs+=1; + if(10>highestPairValue) { + highestPairValue=10; + } + else { + lowestPairValue=10; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 736; + triple=true; + highestTripleValue=10; + } + else if(numberSameCards == 4) { + highestCallChance=787; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("10")) { + numberSameCards += 1; + if(9>highCard) { + highCard=9; + } + else if(9>secondHighCard) { + secondHighCard=9; + } + else if(9>thirdHighCard) { + thirdHighCard=9; + } + else if(9>fourthHighCard) { + fourthHighCard=9; + } + else if (9>fifthHighCard) { + fifthHighCard=9; + } + if(509>highestCallChance) { + highestCallChance=509; + } + } + } + if (numberSameCards == 2) { + if (708 > highestCallChance) { + highestCallChance = 708; + numberPairs+=1; + if(9>highestPairValue) { + highestPairValue=9; + } + else { + lowestPairValue=9; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 735; + triple=true; + highestTripleValue=9; + } + else if(numberSameCards == 4) { + highestCallChance=786; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("9")) { + numberSameCards += 1; + if(8>highCard) { + highCard=8; + } + else if(8>secondHighCard) { + secondHighCard=8; + } + else if(8>thirdHighCard) { + thirdHighCard=8; + } + else if(8>fourthHighCard) { + fourthHighCard=8; + } + else if (8>fifthHighCard) { + fifthHighCard=8; + } + if(508>highestCallChance) { + highestCallChance=508; + } + } + } + if (numberSameCards == 2) { + if (707 > highestCallChance) { + highestCallChance = 707; + numberPairs+=1; + if(8>highestPairValue) { + highestPairValue=8; + } + else { + lowestPairValue=8; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 734; + triple=true; + highestTripleValue=8; + } + else if(numberSameCards == 4) { + highestCallChance=785; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("8")) { + numberSameCards += 1; + if(7>highCard) { + highCard=7; + } + else if(7>secondHighCard) { + secondHighCard=7; + } + else if(7>thirdHighCard) { + thirdHighCard=7; + } + else if(7>fourthHighCard) { + fourthHighCard=7; + } + else if (7>fifthHighCard) { + fifthHighCard=7; + } + if(507>highestCallChance) { + highestCallChance=507; + } + } + } + if (numberSameCards == 2) { + if (706 > highestCallChance) { + highestCallChance = 706; + numberPairs+=1; + if(7>highestPairValue) { + highestPairValue=7; + } + else { + lowestPairValue=7; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 733; + triple=true; + highestTripleValue=7; + } + else if(numberSameCards == 4) { + highestCallChance=784; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("7")) { + numberSameCards += 1; + if(6>highCard) { + highCard=6; + } + else if(6>secondHighCard) { + secondHighCard=6; + } + else if(6>thirdHighCard) { + thirdHighCard=6; + } + else if(6>fourthHighCard) { + fourthHighCard=6; + } + else if (6>fifthHighCard) { + fifthHighCard=6; + } + if(506>highestCallChance) { + highestCallChance=506; + } + } + } + if (numberSameCards == 2) { + if (705 > highestCallChance) { + highestCallChance = 705; + numberPairs+=1; + if(6>highestPairValue) { + highestPairValue=6; + }else { + lowestPairValue=6; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 732; + triple=true; + highestTripleValue=6; + } + else if(numberSameCards == 4) { + highestCallChance=783; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("6")) { + numberSameCards += 1; + if(5>highCard) { + highCard=5; + } + else if(5>secondHighCard) { + secondHighCard=5; + } + else if(5>thirdHighCard) { + thirdHighCard=5; + } + else if(5>fourthHighCard) { + fourthHighCard=5; + } + else if (5>fifthHighCard) { + fifthHighCard=5; + } + if(505>highestCallChance) { + highestCallChance=505; + } + } + } + if (numberSameCards == 2) { + if (704 > highestCallChance) { + highestCallChance = 704; + numberPairs+=1; + if(5>highestPairValue) { + highestPairValue=5; + } + else { + lowestPairValue=5; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 731; + triple=true; + highestTripleValue=5; + } + else if(numberSameCards == 4) { + highestCallChance=782; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("5")) { + numberSameCards += 1; + if(4>highCard) { + highCard=4; + } + else if(4>secondHighCard) { + secondHighCard=4; + } + else if(4>thirdHighCard) { + thirdHighCard=4; + } + else if(4>fourthHighCard) { + fourthHighCard=4; + } + else if (4>fifthHighCard) { + fifthHighCard=4; + } + if(504>highestCallChance) { + highestCallChance=504; + } + } + } + if (numberSameCards == 2) { + if (703 > highestCallChance) { + highestCallChance = 703; + numberPairs+=1; + if(4>highestPairValue) { + highestPairValue=4; + } + else { + lowestPairValue=4; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 730; + triple=true; + highestTripleValue=4; + } + else if(numberSameCards == 4) { + highestCallChance=781; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("4")) { + numberSameCards += 1; + if(3>highCard) { + highCard=3; + } + else if(3>secondHighCard) { + secondHighCard=3; + } + else if(3>thirdHighCard) { + thirdHighCard=3; + } + else if(3>fourthHighCard) { + fourthHighCard=3; + } + else if (3>fifthHighCard) { + fifthHighCard=3; + } + if(503>highestCallChance) { + highestCallChance=503; + } + } + } + if (numberSameCards == 2) { + if (702 > highestCallChance) { + highestCallChance = 702; + numberPairs+=1; + if(3>highestPairValue) { + highestPairValue=3; + } + else { + lowestPairValue=3; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 729; + triple=true; + highestTripleValue=3; + } + else if(numberSameCards == 4) { + highestCallChance=780; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("3")) { + numberSameCards += 1; + if(2>highCard) { + highCard=2; + } + else if(2>secondHighCard) { + secondHighCard=2; + } + else if(2>thirdHighCard) { + thirdHighCard=2; + } + else if(2>fourthHighCard) { + fourthHighCard=2; + } + else if (2>fifthHighCard) { + fifthHighCard=2; + } + if(502>highestCallChance) { + highestCallChance=502; + } + } + } + if (numberSameCards == 2) { + if (701 > highestCallChance) { + highestCallChance = 701; + numberPairs+=1; + if(2>highestPairValue) { + highestPairValue=2; + } + else { + lowestPairValue=2; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 728; + triple=true; + highestTripleValue=2; + } + else if(numberSameCards == 4) { + highestCallChance=779; + } + + numberSameCards = 0; + for (int j = 0; j < botAndMiddleCards.length; j++) { + if (botAndMiddleCards[j].equals("2")) { + numberSameCards += 1; + if(1>highCard) { + highCard=1; + } + else if(1>secondHighCard) { + secondHighCard=1; + } + else if(1>thirdHighCard) { + thirdHighCard=1; + } + else if(1>fourthHighCard) { + fourthHighCard=1; + } + else if (1>fifthHighCard) { + fifthHighCard=1; + } + if(501>highestCallChance) { + highestCallChance=501; + } + } + } + if (numberSameCards == 2) { + if (700 > highestCallChance) { + highestCallChance = 700; + numberPairs+=1; + if(1>highestPairValue) { + highestPairValue=1; + } + else { + lowestPairValue=1; + } + } + } else if (numberSameCards == 3) { + highestCallChance = 727; + triple=true; + highestTripleValue=1; + } + else if(numberSameCards == 4) { + highestCallChance=778; + } + + if(numberPairs==2) { + highestCallChance=713+highestPairValue; + } + if(suits>=5) { + if(straight && 791+highStraightCard>highestCallChance) { + highestCallChance=791+highStraightCard; + } + else if((750+highCard)>highestCallChance) { + highestCallChance=750+highCard; + } + } + if(numberPairs==1 && triple) { + if(highestCallChance<764+highestTripleValue) { + highestCallChance=764+highestTripleValue; + } + } + + return highestCallChance; + } + public boolean playerWins(String [] playerAndMiddleCards, String [] botAndMiddleCards) { + highestSuit=0; + playerPairValue=0; + botPairValue=0; + playerLowPair=0; + botLowPair=0; + highestSuit=playerSpades; + if(playerDiamonds>highestSuit) { + highestSuit=playerDiamonds; + } + if(playerHearts>highestSuit) { + highestSuit=playerHearts; + } + if(playerSpades>highestSuit) { + highestSuit=playerSpades; + } + if(playerClubs>highestSuit) { + highestSuit=playerClubs; + } + + playerScore=botAlgorithm(playerAndMiddleCards, highestSuit); + playerPairValue=highestPairValue; + playerLowPair=lowestPairValue; + playerHighCard=highCard; + playerSecondHighCard=secondHighCard; + playerThirdHighCard=thirdHighCard; + playerFourthHighCard=fourthHighCard; + playerFifthHighCard=fifthHighCard; + highestSuit=0; + highestSuit=botSpades; + if(botDiamonds>highestSuit) { + highestSuit=botDiamonds; + } + if(botHearts>highestSuit) { + highestSuit=botHearts; + } + if(botSpades>highestSuit) { + highestSuit=botSpades; + } + if(botClubs>highestSuit) { + highestSuit=botClubs; + } + botScore=botAlgorithm(botAndMiddleCards, highestSuit); + botPairValue=highestPairValue; + botLowPair=lowestPairValue; + botHighCard=highCard; + botSecondHighCard=secondHighCard; + botThirdHighCard=thirdHighCard; + botFourthHighCard=fourthHighCard; + botFifthHighCard=fifthHighCard; + gameOver=true; + tie=false; + if(playerScore>botScore) { + return true; + } + else if(playerScore==botScore) { + if(playerPairValue>botPairValue) { + return true; + } + else if(playerPairValuebotLowPair) { + return true; + } + else if(playerLowPairbotHighCard) { + return true; + } + else if(playerHighCardbotSecondHighCard) { + return true; + } + else if(playerSecondHighCardbotThirdHighCard) { + return true; + } + else if(playerThirdHighCardbotFourthHighCard) { + return true; + } + else if(playerFourthHighCardbotFifthHighCard) { + return true; + } + else if(playerFifthHighCard votePercentages(m, options)); + m.addReactionAddListener(e -> votePercentages(m, options)); + + pollUp = true; + + } + + } + + private void createTimer(String timeParameter, Message m) { + + String measure = timeParameter.substring(timeParameter.indexOf(' ') + 1, timeParameter.length()); + String amount = timeParameter.substring(0, timeParameter.indexOf(' ')); + + int duration = 0; + + if (measure.equals("hours") || measure.equals("hour")) { + duration = Integer.parseInt(amount) * 60 * 60; + + } else if (measure.equals("minutes") || measure.equals("minute")) { + duration = Integer.parseInt(amount) * 60; + + } else if (measure.equals("seconds") || measure.equals("second")) { + duration = Integer.parseInt(amount); + + } + + Timer timer = new Timer(duration * 1000, e -> { + pollUp = false; + + String title = m.getEmbeds().get(0).getTitle().get(); + String footer = m.getEmbeds().get(0).getFooter().get().getText().get() + "\n(POLL HAS ENDED)\n"; + String description = m.getEmbeds().get(0).getDescription().get(); + + EmbedBuilder eb = new EmbedBuilder().setTitle(title).setDescription(description).setFooter(footer); + + m.edit(eb); + }); + + timer.setRepeats(false); + timer.start(); + } + + private void votePercentages(Message m, String[] options) { + if (pollUp) { + List reactionList = m.getReactions(); + + int[] percentages = new int[options.length]; + + int totalVotes = 0; + + for (int i = 0; i < options.length; i++) { + totalVotes += reactionList.get(i).getCount() - 1; + } + + for (int i = 0; i < options.length; i++) { + int percentage = 0; + try { + percentage = (reactionList.get(i).getCount() - 1) * (100 / totalVotes); + } catch (Exception e) { + e.getStackTrace(); + } + percentages[i] = percentage; + } + + OptionContent[] oc = initializeOptions(options, percentages); + + String descriptionContent = ""; + + for (OptionContent c : oc) { + descriptionContent += c.toString() + "\n"; + } + + String title = m.getEmbeds().get(0).getTitle().get(); + String footer = m.getEmbeds().get(0).getFooter().get().getText().get(); + + m.edit(new EmbedBuilder().setTitle(title).setDescription(descriptionContent).setFooter(footer)); + } + } + + private void handleReactions(Message m, int amount) { + for (int i = 0; i < amount; i++) { + m.addReaction(emoji[i]); + } + } + + private OptionContent[] initializeOptions(String[] options, int[] percentages) { + OptionContent[] oc = new OptionContent[options.length]; + + String percent = " 0%"; + + for (int i = 0; i < options.length; i++) { + if (percentages != null) { + percent = " " + percentages[i] + "%"; + } + + oc[i] = new OptionContent(emoji[i], options[i], percent); + } + return oc; + } + + private Message buildEmbed(String title, OptionContent[] options, TextChannel channel) { + MessageBuilder mb = new MessageBuilder(); + EmbedBuilder eb = new EmbedBuilder(); + + eb.setTitle(title); + eb.setFooter("Testing what this does"); + + String descriptionContent = ""; + for (OptionContent oc : options) { + descriptionContent += oc.toString() + "\n"; + } + eb.setDescription(descriptionContent); + + mb.setEmbed(eb); + Message m = null; + + try { + m = mb.send(channel).get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + System.out.println("exception"); + } + return m; + } + + private Parameters getParameters(String message) { + String messageContent = message; + + String time = messageContent.substring(0, messageContent.indexOf(',') + 1); + messageContent = messageContent.replace(time, ""); + time = time.replace(",", "").trim(); + + String title = messageContent.substring(0, messageContent.indexOf(',') + 1); + messageContent = messageContent.replace(title, ""); + title = title.replace(",", "").trim(); + + ArrayList options = new ArrayList(); + + while (messageContent != "") { + String option = ""; + + if(messageContent.contains(",")) { + option = messageContent.substring(0, messageContent.indexOf(',') + 1); + messageContent = messageContent.replace(option, ""); + option = option.replace(",", "").trim(); + options.add(option); + } else { + option = messageContent.substring(0, messageContent.length()); + messageContent = messageContent.replace(option, ""); + option.trim(); + options.add(option); + } + + + + + } + + Parameters p = new Parameters(time, title, options.toArray(new String[options.size()])); + + return p; + } + + @Override + public void onReactionAdd(ReactionAddEvent event) { + + } + +} + +class Parameters { + String time; + String title; + String[] options; + + Parameters(String time, String title, String[] options) { + this.time = time; + this.title = title; + this.options = options; + } + +} + +class OptionContent { + String emoji; + String option; + String percentage; + + OptionContent(String emoji, String option, String percentage) { + this.emoji = emoji; + this.option = option; + this.percentage = percentage; + } + + @Override + public String toString() { + return emoji + " " + option + " " + percentage; + } + +} diff --git a/src/main/java/org/jointheleague/modules/Reminder.java b/src/main/java/org/jointheleague/modules/Reminder.java new file mode 100644 index 00000000..e0fc0118 --- /dev/null +++ b/src/main/java/org/jointheleague/modules/Reminder.java @@ -0,0 +1,128 @@ +package org.jointheleague.modules; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.time.LocalTime; +import java.time.temporal.ChronoField; +import java.util.ArrayList; +import javax.swing.Timer; +import org.javacord.api.entity.channel.TextChannel; +import org.javacord.api.entity.message.MessageBuilder; +import org.javacord.api.entity.message.embed.EmbedBuilder; +import org.javacord.api.event.message.MessageCreateEvent; +import org.javacord.api.listener.message.MessageCreateListener; +import org.jointheleague.modules.pojo.HelpEmbed; + +import net.aksingh.owmjapis.api.APIException; + +public class Reminder extends CustomMessageCreateListener implements ActionListener { + + ArrayList userNames = new ArrayList(); + ArrayList messages = new ArrayList(); + ArrayList channelNames = new ArrayList(); + ArrayList timers = new ArrayList(); + + public static final String REMIND_COMMAND = "!setReminder"; + + public Reminder(String channelName) { + super(channelName); + helpEmbed = new HelpEmbed(REMIND_COMMAND, + "To use this command first type the '!setReminder' command, followed by the time you want to be reminded (In Military Time, in PST), a comma, then your remind message \nP.S. Make sure when you input your time use a colon between the hours and minutes"); + } + + @Override + public void handle(MessageCreateEvent event) throws APIException { + + if (event.getMessageContent().contains(REMIND_COMMAND)) { + + // add use to the arraylist + String user = event.getMessageAuthor().getIdAsString(); + userNames.add(user); + + // add the channel to the arraylist + TextChannel txtChannel = event.getChannel(); + channelNames.add(txtChannel); + + String parameters = event.getMessageContent().replace(REMIND_COMMAND, ""); + + if (parameters.equals("")) { + event.getChannel().sendMessage("Invalid Input"); + } + + String timeParameter = ""; + + try { + // get the raw timeParameter, fix it later + timeParameter = parameters.substring(0, parameters.indexOf(',')); + + parameters = parameters.substring(parameters.indexOf(',') + 1, parameters.length()); + } catch (StringIndexOutOfBoundsException e) { + // This catches if there is no comma, which probably means there is no message + // so I set that to an empty string + + timeParameter = parameters.substring(0, parameters.length()); + + parameters = ""; + + } + + // get the raw messageParameter, no need to fix it and I add it to the arrayList + // immediately + String messageParameter = parameters.substring(0, parameters.length()); + messages.add(messageParameter); + + // all this is fixing the raw timeParameter so I can parse it to the LocalTime + // class and compare in to the current time + timeParameter = timeParameter.replaceAll(" ", ""); + + int count = timeParameter.length() - timeParameter.replaceAll(":", "").length(); + if (count == 1) { + timeParameter += ":00"; + } + + // parse fixed timeParameter to LocalTime class and get the current local time + LocalTime time = LocalTime.parse(timeParameter); + LocalTime currentTime = LocalTime.now(); + + // using LocalTime class functions, find the time until the user needs to be + // reminded, in seconds + // what the heck is a chronofield + int timeUntil = (int) (time.getLong(ChronoField.SECOND_OF_DAY) + - currentTime.getLong(ChronoField.SECOND_OF_DAY)); + + // Using the calculated time in seconds to create a timer that goes off after + // that time, add to ArrayList + timers.add(new Timer(timeUntil * 1000, this)); + timers.get(timers.size() - 1).start(); + + event.getChannel().sendMessage("Successfully created a reminder for " + time.toString()); + + } + } + + @Override + public void actionPerformed(ActionEvent e) { + + for (int i = 0; i < timers.size(); i++) { + + // Check which timer the ActionEvent belongs to, to find which index to be using + if (e.getSource().equals(timers.get(i))) { + channelNames.get(i).sendMessage("<@" + userNames.get(i) + ">"); + + new MessageBuilder() + .setEmbed(new EmbedBuilder().setTitle(messages.get(i)).setDescription("").setFooter("")) + .send(channelNames.get(i)); + + timers.get(i).stop(); + + // removing the information from the ArrayLists + userNames.remove(i); + channelNames.remove(i); + timers.remove(i); + messages.remove(i); + + } + } + } + +} diff --git a/src/main/java/org/jointheleague/modules/UnbeatableRockPaperScissors.java b/src/main/java/org/jointheleague/modules/UnbeatableRockPaperScissors.java index 216e1dbe..f285296c 100644 --- a/src/main/java/org/jointheleague/modules/UnbeatableRockPaperScissors.java +++ b/src/main/java/org/jointheleague/modules/UnbeatableRockPaperScissors.java @@ -27,6 +27,8 @@ else if(cmd.equalsIgnoreCase("paper")) { } else if(cmd.equalsIgnoreCase("scissors")) { event.getChannel().sendMessage("Rock"); + }else { + //event.getChannel().sendMessage("Invalid Command"); } } diff --git a/src/main/java/org/jointheleague/modules/pojo/MarsImage/Camera.java b/src/main/java/org/jointheleague/modules/pojo/MarsImage/Camera.java new file mode 100644 index 00000000..e59e0bc7 --- /dev/null +++ b/src/main/java/org/jointheleague/modules/pojo/MarsImage/Camera.java @@ -0,0 +1,56 @@ + +package org.jointheleague.modules.pojo.MarsImage; + +import javax.annotation.Generated; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +@Generated("jsonschema2pojo") +public class Camera { + + @SerializedName("id") + @Expose + private Integer id; + @SerializedName("name") + @Expose + private String name; + @SerializedName("rover_id") + @Expose + private Integer roverId; + @SerializedName("full_name") + @Expose + private String fullName; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getRoverId() { + return roverId; + } + + public void setRoverId(Integer roverId) { + this.roverId = roverId; + } + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } + +} diff --git a/src/main/java/org/jointheleague/modules/pojo/MarsImage/MarsImageWrapper.java b/src/main/java/org/jointheleague/modules/pojo/MarsImage/MarsImageWrapper.java new file mode 100644 index 00000000..6647ff30 --- /dev/null +++ b/src/main/java/org/jointheleague/modules/pojo/MarsImage/MarsImageWrapper.java @@ -0,0 +1,24 @@ + +package org.jointheleague.modules.pojo.MarsImage; + +import java.util.List; +import javax.annotation.Generated; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +@Generated("jsonschema2pojo") +public class MarsImageWrapper { + + @SerializedName("photos") + @Expose + private List photos = null; + + public List getPhotos() { + return photos; + } + + public void setPhotos(List photos) { + this.photos = photos; + } + +} diff --git a/src/main/java/org/jointheleague/modules/pojo/MarsImage/Photo.java b/src/main/java/org/jointheleague/modules/pojo/MarsImage/Photo.java new file mode 100644 index 00000000..7f9c1016 --- /dev/null +++ b/src/main/java/org/jointheleague/modules/pojo/MarsImage/Photo.java @@ -0,0 +1,78 @@ + +package org.jointheleague.modules.pojo.MarsImage; + +import javax.annotation.Generated; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +@Generated("jsonschema2pojo") +public class Photo { + + @SerializedName("id") + @Expose + private Integer id; + @SerializedName("sol") + @Expose + private Integer sol; + @SerializedName("camera") + @Expose + private Camera camera; + @SerializedName("img_src") + @Expose + private String imgSrc; + @SerializedName("earth_date") + @Expose + private String earthDate; + @SerializedName("rover") + @Expose + private Rover rover; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getSol() { + return sol; + } + + public void setSol(Integer sol) { + this.sol = sol; + } + + public Camera getCamera() { + return camera; + } + + public void setCamera(Camera camera) { + this.camera = camera; + } + + public String getImgSrc() { + return imgSrc; + } + + public void setImgSrc(String imgSrc) { + this.imgSrc = imgSrc; + } + + public String getEarthDate() { + return earthDate; + } + + public void setEarthDate(String earthDate) { + this.earthDate = earthDate; + } + + public Rover getRover() { + return rover; + } + + public void setRover(Rover rover) { + this.rover = rover; + } + +} diff --git a/src/main/java/org/jointheleague/modules/pojo/MarsImage/Rover.java b/src/main/java/org/jointheleague/modules/pojo/MarsImage/Rover.java new file mode 100644 index 00000000..014619f2 --- /dev/null +++ b/src/main/java/org/jointheleague/modules/pojo/MarsImage/Rover.java @@ -0,0 +1,74 @@ + +package org.jointheleague.modules.pojo.MarsImage; + +import javax.annotation.Generated; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +@Generated("jsonschema2pojo") +public class Rover { + + @SerializedName("id") + @Expose + private Integer id; + @SerializedName("name") + @Expose + private String name; + @SerializedName("landing_date") + @Expose + private String landingDate; + @SerializedName("launch_date") + @Expose + private String launchDate; + @SerializedName("status") + @Expose + private String status; + @SerializedName("max_sol") + @Expose + private int maxSol; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLandingDate() { + return landingDate; + } + + public void setLandingDate(String landingDate) { + this.landingDate = landingDate; + } + + public String getLaunchDate() { + return launchDate; + } + + public void setLaunchDate(String launchDate) { + this.launchDate = launchDate; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public int getMaxSol() { + return maxSol; + } + +} diff --git a/src/main/java/org/jointheleague/modules/pojo/MarsRover/Camera.java b/src/main/java/org/jointheleague/modules/pojo/MarsRover/Camera.java new file mode 100644 index 00000000..ac1a8c62 --- /dev/null +++ b/src/main/java/org/jointheleague/modules/pojo/MarsRover/Camera.java @@ -0,0 +1,34 @@ + +package org.jointheleague.modules.pojo.MarsRover; + +import javax.annotation.Generated; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +@Generated("jsonschema2pojo") +public class Camera { + + @SerializedName("name") + @Expose + private String name; + @SerializedName("full_name") + @Expose + private String fullName; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } + +} diff --git a/src/main/java/org/jointheleague/modules/pojo/MarsRover/ManifestRover.java b/src/main/java/org/jointheleague/modules/pojo/MarsRover/ManifestRover.java new file mode 100644 index 00000000..2232de5c --- /dev/null +++ b/src/main/java/org/jointheleague/modules/pojo/MarsRover/ManifestRover.java @@ -0,0 +1,112 @@ + +package org.jointheleague.modules.pojo.MarsRover; + +import java.util.List; +import javax.annotation.Generated; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +@Generated("jsonschema2pojo") +public class ManifestRover { + + @SerializedName("id") + @Expose + private Integer id; + @SerializedName("name") + @Expose + private String name; + @SerializedName("landing_date") + @Expose + private String landingDate; + @SerializedName("launch_date") + @Expose + private String launchDate; + @SerializedName("status") + @Expose + private String status; + @SerializedName("max_sol") + @Expose + private Integer maxSol; + @SerializedName("max_date") + @Expose + private String maxDate; + @SerializedName("total_photos") + @Expose + private Integer totalPhotos; + @SerializedName("cameras") + @Expose + private List cameras = null; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLandingDate() { + return landingDate; + } + + public void setLandingDate(String landingDate) { + this.landingDate = landingDate; + } + + public String getLaunchDate() { + return launchDate; + } + + public void setLaunchDate(String launchDate) { + this.launchDate = launchDate; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public Integer getMaxSol() { + return maxSol; + } + + public void setMaxSol(Integer maxSol) { + this.maxSol = maxSol; + } + + public String getMaxDate() { + return maxDate; + } + + public void setMaxDate(String maxDate) { + this.maxDate = maxDate; + } + + public Integer getTotalPhotos() { + return totalPhotos; + } + + public void setTotalPhotos(Integer totalPhotos) { + this.totalPhotos = totalPhotos; + } + + public List getCameras() { + return cameras; + } + + public void setCameras(List cameras) { + this.cameras = cameras; + } + +} diff --git a/src/main/java/org/jointheleague/modules/pojo/MarsRover/MarsRoverWrapper.java b/src/main/java/org/jointheleague/modules/pojo/MarsRover/MarsRoverWrapper.java new file mode 100644 index 00000000..b1a2686d --- /dev/null +++ b/src/main/java/org/jointheleague/modules/pojo/MarsRover/MarsRoverWrapper.java @@ -0,0 +1,23 @@ + +package org.jointheleague.modules.pojo.MarsRover; + +import javax.annotation.Generated; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +@Generated("jsonschema2pojo") +public class MarsRoverWrapper { + + @SerializedName("rover") + @Expose + private ManifestRover rover; + + public ManifestRover getRover() { + return rover; + } + + public void setRover(ManifestRover rover) { + this.rover = rover; + } + +} diff --git a/src/main/java/org/jointheleague/modules/pojo/movieRecs/com/example/Movie2.java b/src/main/java/org/jointheleague/modules/pojo/movieRecs/com/example/Movie2.java new file mode 100644 index 00000000..47f5500c --- /dev/null +++ b/src/main/java/org/jointheleague/modules/pojo/movieRecs/com/example/Movie2.java @@ -0,0 +1,55 @@ + +package org.jointheleague.modules.pojo.movieRecs.com.example; + +import java.util.List; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class Movie2 { + + @SerializedName("page") + @Expose + private Integer page; + @SerializedName("results") + @Expose + private List results = null; + @SerializedName("total_pages") + @Expose + private Integer totalPages; + @SerializedName("total_results") + @Expose + private Integer totalResults; + + public Integer getPage() { + return page; + } + + public void setPage(Integer page) { + this.page = page; + } + + public List getResults() { + return results; + } + + public void setResults(List results) { + this.results = results; + } + + public Integer getTotalPages() { + return totalPages; + } + + public void setTotalPages(Integer totalPages) { + this.totalPages = totalPages; + } + + public Integer getTotalResults() { + return totalResults; + } + + public void setTotalResults(Integer totalResults) { + this.totalResults = totalResults; + } + +} diff --git a/src/main/java/org/jointheleague/modules/pojo/movieRecs/com/example/Result.java b/src/main/java/org/jointheleague/modules/pojo/movieRecs/com/example/Result.java new file mode 100644 index 00000000..6b2de8da --- /dev/null +++ b/src/main/java/org/jointheleague/modules/pojo/movieRecs/com/example/Result.java @@ -0,0 +1,165 @@ + +package org.jointheleague.modules.pojo.movieRecs.com.example; + +import java.util.List; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class Result { + + @SerializedName("adult") + @Expose + private Boolean adult; + @SerializedName("backdrop_path") + @Expose + private String backdropPath; + @SerializedName("genre_ids") + @Expose + private List genreIds = null; + @SerializedName("id") + @Expose + private Integer id; + @SerializedName("original_language") + @Expose + private String originalLanguage; + @SerializedName("original_title") + @Expose + private String originalTitle; + @SerializedName("overview") + @Expose + private String overview; + @SerializedName("popularity") + @Expose + private Double popularity; + @SerializedName("poster_path") + @Expose + private String posterPath; + @SerializedName("release_date") + @Expose + private String releaseDate; + @SerializedName("title") + @Expose + private String title; + @SerializedName("video") + @Expose + private Boolean video; + @SerializedName("vote_average") + @Expose + private Double voteAverage; + @SerializedName("vote_count") + @Expose + private Integer voteCount; + + public Boolean getAdult() { + return adult; + } + + public void setAdult(Boolean adult) { + this.adult = adult; + } + + public String getBackdropPath() { + return backdropPath; + } + + public void setBackdropPath(String backdropPath) { + this.backdropPath = backdropPath; + } + + public List getGenreIds() { + return genreIds; + } + + public void setGenreIds(List genreIds) { + this.genreIds = genreIds; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getOriginalLanguage() { + return originalLanguage; + } + + public void setOriginalLanguage(String originalLanguage) { + this.originalLanguage = originalLanguage; + } + + public String getOriginalTitle() { + return originalTitle; + } + + public void setOriginalTitle(String originalTitle) { + this.originalTitle = originalTitle; + } + + public String getOverview() { + return overview; + } + + public void setOverview(String overview) { + this.overview = overview; + } + + public Double getPopularity() { + return popularity; + } + + public void setPopularity(Double popularity) { + this.popularity = popularity; + } + + public String getPosterPath() { + return posterPath; + } + + public void setPosterPath(String posterPath) { + this.posterPath = posterPath; + } + + public String getReleaseDate() { + return releaseDate; + } + + public void setReleaseDate(String releaseDate) { + this.releaseDate = releaseDate; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Boolean getVideo() { + return video; + } + + public void setVideo(Boolean video) { + this.video = video; + } + + public Double getVoteAverage() { + return voteAverage; + } + + public void setVoteAverage(Double voteAverage) { + this.voteAverage = voteAverage; + } + + public Integer getVoteCount() { + return voteCount; + } + + public void setVoteCount(Integer voteCount) { + this.voteCount = voteCount; + } + +} diff --git a/src/main/resources/WolframAlpha-1.1.jar b/src/main/resources/WolframAlpha-1.1.jar deleted file mode 100644 index 9b98a506..00000000 Binary files a/src/main/resources/WolframAlpha-1.1.jar and /dev/null differ diff --git a/src/main/resources/config.json b/src/main/resources/config.json deleted file mode 100644 index 0b58c8d9..00000000 --- a/src/main/resources/config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "channels": ["channelName"], - "token": "discordToken" -}