@ -2,6 +2,10 @@ package de.yannicpunktdee.yoshibot.command;
import de.yannicpunktdee.yoshibot.command.commands.* ;
import de.yannicpunktdee.yoshibot.command.commands.* ;
import java.lang.reflect.InvocationTargetException ;
import java.util.HashMap ;
import java.util.Map ;
/ * *
/ * *
* Unterscheidet nach der spezifizierten Action welche YoshiCommand - Kindklasse zum Ausführen des Kommandos verwendet
* Unterscheidet nach der spezifizierten Action welche YoshiCommand - Kindklasse zum Ausführen des Kommandos verwendet
* wird .
* wird .
@ -9,6 +13,29 @@ import de.yannicpunktdee.yoshibot.command.commands.*;
* @author Yannic Link
* @author Yannic Link
* /
* /
public class YoshiCommandDistributor {
public class YoshiCommandDistributor {
public static final String COMMAND_HELP = "help" ;
public static final String COMMAND_JOKE = "joke" ;
public static final String COMMAND_SAY = "say" ;
public static final String COMMAND_PLAY = "play" ;
public static final String COMMAND_SAUCE = "sauce" ;
public static final String COMMAND_PAT = "pat" ;
public static final String COMMAND_BONK = "bonk" ;
public static final String COMMAND_WIKIPEDIA = "wikipedia" ;
private static final Map < String , Class < ? > > commands = new HashMap < > ( ) ;
public static void init ( ) {
commands . put ( COMMAND_HELP , HelpCommand . class ) ;
commands . put ( COMMAND_JOKE , JokeCommand . class ) ;
commands . put ( COMMAND_SAY , SayCommand . class ) ;
commands . put ( COMMAND_PLAY , PlayCommand . class ) ;
commands . put ( COMMAND_SAUCE , SauceCommand . class ) ;
commands . put ( COMMAND_PAT , PatCommand . class ) ;
commands . put ( COMMAND_BONK , BonkCommand . class ) ;
commands . put ( COMMAND_WIKIPEDIA , WikipediaCommand . class ) ;
}
/ * *
/ * *
* Führt das jeweils zuständige Kommando aus .
* Führt das jeweils zuständige Kommando aus .
@ -36,76 +63,17 @@ public class YoshiCommandDistributor {
break ;
break ;
}
}
YoshiCommand command = null ;
switch ( context . getAction ( ) ) {
case HELP :
command = new HelpCommand ( context ) ;
break ;
case JOKE :
command = new JokeCommand ( context ) ;
break ;
case SAY :
command = new SayCommand ( context ) ;
break ;
case PLAY :
command = new PlayCommand ( context ) ;
break ;
case SAUCE :
command = new SauceCommand ( context ) ;
break ;
case PAT :
command = new PatCommand ( context ) ;
break ;
case BONK :
command = new BonkCommand ( context ) ;
break ;
case WIKIPEDIA :
command = new WikipediaCommand ( context ) ;
break ;
default :
context . getEvent ( ) . getTextChannel ( ) . sendMessage ( "Dieses Kommando existiert noch nicht." ) . queue ( ) ;
break ;
Class < ? > commandClass = commands . get ( context . getAction ( ) ) ;
if ( commandClass = = null ) {
context . getEvent ( ) . getTextChannel ( ) . sendMessage ( "Diese Aktion existiert nicht." ) . queue ( ) ;
return ;
}
try {
( ( YoshiCommand ) commandClass . getConstructor ( YoshiCommandContext . class ) . newInstance ( context ) ) . execute ( ) ;
} catch ( Exception e ) {
context . getEvent ( ) . getTextChannel ( ) . sendMessage ( "Konnte Aktion nicht zuordnen." ) . queue ( ) ;
return ;
}
}
if ( command ! = null ) command . execute ( ) ;
}
/ * *
* Enth � lt alle m � glichen Aktionen , die der Yoshi - Bot ausf � hren kann .
*
* @author Yannic Link
* /
public enum Action {
/ * *
* Sende eine Hilfe - Nachricht , in der die Benutzung des Yoshi - Bots dokumentiert ist .
* /
HELP ,
/ * *
* Erzählt einen Jokus .
* /
JOKE ,
/ * *
* Gib die Nachricht - message aus . � ber die Option - out [ text | voice ] wird angegeben , ob die Nachricht per
* Textnachricht oder als Text - To - Speech ausgegeben wird . Mit - channel l � sst sich der Ausgabechannel bestimmen .
* Standardm � � ig wird die Ausgabe in den Textchannel zur � ckgesendet , aus dem das Kommando kam .
* /
SAY ,
/ * *
* Gibt eine vorhandene Ressource - name aus . ( Vorhandene Ressourcen lassen sich mit der Aktion LIST anzeigen ) .
* � ber den Parameter - type [ link | audio | video ] l � sst sich der Typ der Ressource spezifizieren . Ein Link wird
* � ber in den per - channel spezifizierten ( default = Ursprungskanal ) Textkanal geschickt . Eine Audiodatei wird
* � ber den per - channel spezifizierten ( default = Aktueller Kanal ) Voice - Channel ausgegeben . Ein Video wird � ber
* den per - channel spezifizierten ( default = Aktueller Kanal ) Voice - Channel abgespielt .
* /
PLAY ,
/ * *
* L � scht die Ressource , die � ber - name spezifiziert wurde . Mit - type wird der Ressourcentyp festgelegt .
* /
SAUCE ,
PAT ,
BONK ,
WIKIPEDIA
}
}
}
}