Browse Source

Help und List-Kommando hinzugefügt.

paul
yl60lepu 4 years ago
parent
commit
3f7f7c724d
5 changed files with 79 additions and 8 deletions
  1. +9
    -2
      README.md
  2. +6
    -0
      app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java
  3. +4
    -5
      app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommandDistributor.java
  4. +19
    -1
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/HelpCommand.java
  5. +41
    -0
      app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/ListCommand.java

+ 9
- 2
README.md View File

@ -7,5 +7,12 @@ Ein in Java geschriebener Discordbot, der lustige Sachen kann.
Ordner app/src/main/resources anlegen und darein die Config.properties anlegen. Diese sollte folgende Werte enthalten: Ordner app/src/main/resources anlegen und darein die Config.properties anlegen. Diese sollte folgende Werte enthalten:
- jda_builder_string -> Client Secret - jda_builder_string -> Client Secret
- audio_source_directory -> Verzeichnis, in dem die Audio-Dateien liegen, auch unter Windows mit / anstatt \ (dieses Verzeichnis sollte natürlich existieren)
- restrict_commands_to_channel -> Textkanalname, auf dem die Botkommandos empfangen werden
- audio_source_directory -> Verzeichnis, in dem die Audio-Dateien liegen, auch unter Windows mit / anstatt \
(dieses Verzeichnis sollte natürlich existieren)
- restrict_commands_to_channel -> Textkanalname, auf dem die Botkommandos empfangen werden
##Export
Zum Exportieren der Applikation führe den Befehl "gradlew clean build" im Root Verzeichnis aus. Die fertige Jar liegt
in "app/build/libs". Füge dieser noch die Config.properties hinzu und starte sie mit "java-jar app.jar" aus. Achte auch
hierbei darauf, dass der Audio-Datei-Pfad existiert.

+ 6
- 0
app/src/main/java/de/yannicpunktdee/yoshibot/command/YoshiCommand.java View File

@ -1,5 +1,7 @@
package de.yannicpunktdee.yoshibot.command; package de.yannicpunktdee.yoshibot.command;
import net.dv8tion.jda.api.entities.MessageEmbed;
/** /**
* Abstrakte Superklasse für alle Kommandos. * Abstrakte Superklasse für alle Kommandos.
* @author Yannic Link * @author Yannic Link
@ -40,4 +42,8 @@ public abstract class YoshiCommand {
context.getEvent().getTextChannel().sendMessage(message).queue(); context.getEvent().getTextChannel().sendMessage(message).queue();
} }
public void sendMessage(MessageEmbed messageEmbed){
context.getEvent().getTextChannel().sendMessage(messageEmbed).queue();
}
} }

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

@ -1,10 +1,6 @@
package de.yannicpunktdee.yoshibot.command; package de.yannicpunktdee.yoshibot.command;
import de.yannicpunktdee.yoshibot.command.commands.HelpCommand;
import de.yannicpunktdee.yoshibot.command.commands.JokeCommand;
import de.yannicpunktdee.yoshibot.command.commands.PlayCommand;
import de.yannicpunktdee.yoshibot.command.commands.SayCommand;
import de.yannicpunktdee.yoshibot.command.commands.StopCommand;
import de.yannicpunktdee.yoshibot.command.commands.*;
/** /**
* Unterscheidet nach der spezifizierten Action welche YoshiCommand-Kindklasse zum Ausführen des Kommandos * Unterscheidet nach der spezifizierten Action welche YoshiCommand-Kindklasse zum Ausführen des Kommandos
@ -49,6 +45,9 @@ public class YoshiCommandDistributor {
case SAY: case SAY:
command = new SayCommand(context); command = new SayCommand(context);
break; break;
case LIST:
command = new ListCommand(context);
break;
case PLAY: case PLAY:
command = new PlayCommand(context); command = new PlayCommand(context);
break; break;


+ 19
- 1
app/src/main/java/de/yannicpunktdee/yoshibot/command/commands/HelpCommand.java View File

@ -2,6 +2,7 @@ package de.yannicpunktdee.yoshibot.command.commands;
import de.yannicpunktdee.yoshibot.command.YoshiCommand; import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext; import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
import net.dv8tion.jda.api.EmbedBuilder;
public class HelpCommand extends YoshiCommand { public class HelpCommand extends YoshiCommand {
@ -10,6 +11,23 @@ public class HelpCommand extends YoshiCommand {
} }
@Override @Override
public boolean execute() {return true;}
public boolean execute() {
if(!super.execute()) return false;
EmbedBuilder eb = new EmbedBuilder();
eb.setTitle("So kannst du den Yohsi-Bot benutzen:");
eb.setDescription("Jeder Befehl startet mit \"::yoshi\" gefolgt von einer Aktion (folgend aufgelistet) und "
+ "den Parametern. Jeder Parameter besitzt einen Namen, der mit einem Bindestrich \"-\" beginnt und optional "
+ "danach einen Wert. Sollte der Wert Leerzeichen beinhalten muss dieser in doppelte Anf\u00fchrungszeichen "
+ "gesetzt werden. Es gilt also die Form:\n ::yoshi aktion -param1Name param1Wert -param2Name \"param 2 Wert\"\n"
+ "Folgende Befehle gibt es bereits:");
eb.addField("help", "Zeigt genau diesen Hilfetext an.", false);
eb.addField("joke", "Schreibt einen random Jokus in den \u00fcber -channel angegebenen Textchannel.", false);
eb.addField("list", "Listet alle derzeit verf\u00fcgbaren Sounds auf.", false);
eb.addField("play", "Spielt den Sound mit dem Namen -name in dem Voicechannel -channel ab.", false);
sendMessage(eb.build());
return true;
}
} }

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

@ -0,0 +1,41 @@
package de.yannicpunktdee.yoshibot.command.commands;
import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
import de.yannicpunktdee.yoshibot.main.Resources;
import net.dv8tion.jda.api.EmbedBuilder;
import java.awt.*;
import java.io.File;
public class ListCommand extends YoshiCommand {
public ListCommand(YoshiCommandContext context) {
super(context);
}
@Override
public boolean execute() {
if(!super.execute()) return false;
File audioDirectory = new File(Resources.getAudioSourceDirectory());
if(!audioDirectory.exists()){
sendMessage("Es existiert kein Audiodatei-Verzeichnis.");
return false;
}
StringBuilder sb = new StringBuilder();
for(File f : audioDirectory.listFiles()){
String fName = f.getName();
if(!fName.endsWith(".opus")) continue;
sb.append(fName.substring(0, fName.lastIndexOf(".opus")));
sb.append("\n");
}
EmbedBuilder eb = new EmbedBuilder();
eb.setTitle("Es sind folgende Audios verf\u00fcgbar:");
eb.setColor(Color.blue);
eb.setDescription(sb.toString());
sendMessage(eb.build());
return true;
}
}

Loading…
Cancel
Save