Browse Source

Fix a bit

pull/2/head
Paul Glaß 4 years ago
parent
commit
8f3313c7ea
6 changed files with 82 additions and 31 deletions
  1. +10
    -7
      app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java
  2. +5
    -1
      app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandDistributor.java
  3. +26
    -15
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/JokeCommand.java
  4. +36
    -0
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java
  5. +3
    -1
      app/src/main/java/de/yannicpunktdee/yoshibot/utils/RestHelper.java
  6. +2
    -7
      app/src/main/java/de/yannicpunktdee/yoshibot/utils/SauceProvider.java

+ 10
- 7
app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java View File

@ -4,6 +4,7 @@ import net.dv8tion.jda.api.entities.MessageEmbed;
/**
* Abstrakte Superklasse für alle Kommandos.
*
* @author Yannic Link
*/
public abstract class YoshiCommand {
@ -17,8 +18,9 @@ public abstract class YoshiCommand {
/**
* Erzeugt ein neues Kommando, führt es aber noch nicht aus. Es wird ermittelt, ob die Argumentenkombination
* valide ist und das isOk-Flag gesetzt. Im Fehlerfall wird eine Fehleremeldung spezifiziert.
* Erzeugt ein neues Kommando, führt es aber noch nicht aus. Es wird ermittelt, ob die Argumentenkombination valide
* ist und das isOk-Flag gesetzt. Im Fehlerfall wird eine Fehleremeldung spezifiziert.
*
* @param context Der Kontext mit dem das Kommando aufgerufen wurde.
*/
public YoshiCommand(YoshiCommandContext context) {
@ -27,23 +29,24 @@ public abstract class YoshiCommand {
/**
* Führt das Kommando aus.
*
* @return True, wenn Ausführung erfolgreich. False, wenn Ausführung fehlgeschlagen. Fehlermeldung wird in
* errorMessage spezifiziert.
*/
public boolean execute() {
if(!context.containsArguments(requiredArguments)){
if (!context.containsArguments(requiredArguments)) {
sendMessage("Fehlende Argumente");
return false;
}
return true;
}
protected void sendMessage(String message) {
protected final void sendMessage(String message) {
context.getEvent().getTextChannel().sendMessage(message).queue();
}
public void sendMessage(MessageEmbed messageEmbed){
protected final void sendMessage(MessageEmbed messageEmbed) {
context.getEvent().getTextChannel().sendMessage(messageEmbed).queue();
}
}

+ 5
- 1
app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandDistributor.java View File

@ -59,6 +59,9 @@ public class YoshiCommandDistributor {
case PAT:
command = new PatCommand(context);
break;
case WIKIPEDIA:
command = new WikipediaCommand(context);
break;
default:
context.getEvent().getTextChannel().sendMessage("Dieses Kommando existiert noch nicht.").queue();
break;
@ -104,7 +107,8 @@ public class YoshiCommandDistributor {
*/
DELETE,
SAUCE,
PAT
PAT,
WIKIPEDIA
}


+ 26
- 15
app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/JokeCommand.java View File

@ -15,6 +15,7 @@ import static de.yannicpunktdee.yoshibot.utils.RestHelper.getFromURL;
/**
* Schickt einen zufälligen Jokus aus einer zufällig ausgewählten Quelle in den Textchannel.
*
* @author Yannic Link
*/
public class JokeCommand extends YoshiCommand {
@ -29,31 +30,41 @@ public class JokeCommand extends YoshiCommand {
/**
* {@inheritDoc}
*/
@Override public synchronized boolean execute() {
@Override
public synchronized boolean execute() {
String message = "Jokus";
Random random = YoshiBot.getInstance().getRandom();
int number = random.nextInt(3);
switch(number) {
case 0: message = jokeApi(); break;
case 1: message = officialJokeApi(); break;
case 2: message = chuckNorris(); break;
default: message = "Jokus"; break;
switch (number) {
case 0:
message = jokeApi();
break;
case 1:
message = officialJokeApi();
break;
case 2:
message = chuckNorris();
break;
default:
message = "Jokus";
break;
}
if(context.containsArguments(new String[] {"channel"})) {
if (context.containsArguments(new String[]{"channel"})) {
String arg = context.getArgument("channel");
if(arg == null) {
if (arg == null) {
sendMessage("Es wurde kein channel angegeben.");
return false;
}
List<TextChannel> channels = YoshiBot.getInstance().jda.getTextChannelsByName(context.getArgument("channel"), true);
if(channels.isEmpty()) {
List<TextChannel> channels = YoshiBot.getInstance().jda
.getTextChannelsByName(context.getArgument("channel"), true);
if (channels.isEmpty()) {
sendMessage("Der Kanalname konnte nicht gefunden werden.");
return false;
}
channels.get(0).sendMessage(message).queue();
}else {
} else {
sendMessage(message);
}
return true;
@ -68,7 +79,7 @@ public class JokeCommand extends YoshiCommand {
String raw = getFromURL(url);
json = new JSONObject(raw);
return json.getJSONObject("value").getString("joke");
}catch(JSONException | IOException e) {
} catch (JSONException e) {
return "Konnte keinen Jokus von \"" + url + "\" laden.";
}
}
@ -85,7 +96,7 @@ public class JokeCommand extends YoshiCommand {
result += " - ";
result += json.getString("punchline");
return result;
}catch(JSONException | IOException e) {
} catch (JSONException e) {
return "Konnte keinen Jokus von \"" + url + "\" laden.";
}
}
@ -102,9 +113,9 @@ public class JokeCommand extends YoshiCommand {
result += " - ";
result += json.getString("delivery");
return result;
}catch(JSONException | IOException e) {
} catch (JSONException e) {
return "Konnte keinen Jokus von \"" + url + "\" laden.";
}
}
}

+ 36
- 0
app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/WikipediaCommand.java View File

@ -0,0 +1,36 @@
package de.yannicpunktdee.yoshibot.command.commands;
import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type;
import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
import de.yannicpunktdee.yoshibot.utils.Logger;
import de.yannicpunktdee.yoshibot.utils.RestHelper;
import org.json.JSONObject;
public class WikipediaCommand extends YoshiCommand {
/**
* Erzeugt ein neues Kommando, führt es aber noch nicht aus. Es wird ermittelt, ob die Argumentenkombination valide
* ist und das isOk-Flag gesetzt. Im Fehlerfall wird eine Fehleremeldung spezifiziert.
*
* @param context Der Kontext mit dem das Kommando aufgerufen wurde.
*/
public WikipediaCommand(YoshiCommandContext context) {
super(context);
}
@Override
public boolean execute() {
if (!super.execute()) return false;
String url = "https://de.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext" +
"&redirects&titles=" + context.getArgument("name");
JSONObject articleBase = new JSONObject(RestHelper.getFromURL(url));
JSONObject pages = articleBase.getJSONObject("query").getJSONObject("pages");
if (pages.has("-1")){
sendMessage("Kein Artikel namens " + context.getArgument("name") + " gefunden!");
Logger.log("Konnte Artikel " + context.getArgument("name") + " nicht finden!", Type.WARNING);
}
return true;
}
}

+ 3
- 1
app/src/main/java/de/yannicpunktdee/yoshibot/utils/RestHelper.java View File

@ -1,5 +1,6 @@
package de.yannicpunktdee.yoshibot.utils;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringEscapeUtils;
import java.io.BufferedReader;
@ -10,7 +11,8 @@ import java.net.URL;
public final class RestHelper {
public static String getFromURL(String url) throws IOException {
@SneakyThrows
public static String getFromURL(String url) {
StringBuilder response = new StringBuilder("");
HttpURLConnection con = null;


+ 2
- 7
app/src/main/java/de/yannicpunktdee/yoshibot/utils/SauceProvider.java View File

@ -136,13 +136,8 @@ public class SauceProvider {
}
private static JSONObject getParsedSauceData(String url) {
String raw = null;
try {
raw = RestHelper.getFromURL(url);
} catch (IOException e) {
e.printStackTrace();
}
return new JSONObject(Objects.requireNonNull(raw));
String raw = RestHelper.getFromURL(url);
return new JSONObject(raw);
}
private static String tagsForRest(String tags) {


Loading…
Cancel
Save