package com.techcavern.wavetact.ircCommands.fun; import com.google.gson.JsonObject; import com.techcavern.wavetact.annot.IRCCMD; import com.techcavern.wavetact.objects.IRCCommand; import com.techcavern.wavetact.utils.GeneralUtils; import com.techcavern.wavetact.utils.IRCUtils; import com.techcavern.wavetact.utils.Registry; import org.apache.commons.lang3.RandomUtils; import org.pircbotx.Channel; import org.pircbotx.PircBotX; import org.pircbotx.User; import java.io.FileNotFoundException; @IRCCMD public class Xkcd extends IRCCommand { public Xkcd() { super(GeneralUtils.toArray("xkcd x randomxkcd"), 1, "xkcd [comic num#]", "Returns random xkcd comic or specified comic #", false); } @Override public void onCommand(String command, User user, PircBotX network, String prefix, Channel channel, boolean isPrivate, int userPermLevel, String... args) throws Exception { Integer comicnumber = 404; JsonObject latestcomic = GeneralUtils.getJsonObject("http://xkcd.com/info.0.json"); Integer latest = latestcomic.get("num").getAsInt(); if (args.length > 0) { comicnumber = Integer.parseInt(args[0]); if (latest < comicnumber) { IRCUtils.sendError(user, network, channel, "Comic does not exist", prefix); return; } } else { do { comicnumber = Registry.randNum.nextInt(latest); } while (comicnumber == 404); } try { JsonObject comic = GeneralUtils.getJsonObject("http://xkcd.com/" + comicnumber + "/info.0.json"); String date = "Date: " + comic.get("day").getAsString() + "/" + comic.get("month").getAsString() + "/" + comic.get("year").getAsString(); String num = comic.get("num").getAsString(); String title = comic.get("title").getAsString(); IRCUtils.sendMessage(user, network, channel, "[" + num + "] " + date + " - " + title + " - " + GeneralUtils.shortenURL("http://xkcd.com/" + num), prefix); } catch (FileNotFoundException e) { IRCUtils.sendError(user, network, channel, "Comic does not exist", prefix); } } }