changed CommandHandler Structure
This commit is contained in:
parent
1c9fd312c8
commit
ecc78ffb0a
|
@ -321,7 +321,7 @@ public class TelegramAPI implements Runnable {
|
||||||
if(text.startsWith("/" )) {
|
if(text.startsWith("/" )) {
|
||||||
text = text.substring(1);//remove '/'
|
text = text.substring(1);//remove '/'
|
||||||
isCommand = true;
|
isCommand = true;
|
||||||
cmdmgr.onCommand(text, msg.getFrom(), json.getJSONObject("message"));
|
cmdmgr.onCommand(text, msg.getFrom(), msg);
|
||||||
} else {
|
} else {
|
||||||
Event e = null;
|
Event e = null;
|
||||||
if(getMsg().has(Member.audio)) {
|
if(getMsg().has(Member.audio)) {
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
package de.mrbesen.telegram.commands;
|
package de.mrbesen.telegram.commands;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import de.mrbesen.telegram.objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
|
||||||
public interface CommandHandler {
|
public interface CommandHandler extends ICommandHandler{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should return true, if the command is handled correctly, false if the help menu should be displayed
|
* Should return true, if the command is handled correctly, false if the help menu should be displayed
|
||||||
|
|
|
@ -1,21 +1,20 @@
|
||||||
package de.mrbesen.telegram.commands;
|
package de.mrbesen.telegram.commands;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import com.google.common.collect.ArrayListMultimap;
|
import com.google.common.collect.ArrayListMultimap;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
|
||||||
|
import de.mrbesen.telegram.objects.TMessage;
|
||||||
import de.mrbesen.telegram.objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
|
||||||
public class CommandManager {
|
public class CommandManager {
|
||||||
|
|
||||||
private final static String CMDPATTERN = "^[\\w-]+$";
|
private final static String CMDPATTERN = "^[\\w-]+$";
|
||||||
|
|
||||||
private Multimap<String, CommandHandler> handlerlist = ArrayListMultimap.create();//list of all registered CommandHandler
|
private Multimap<String, ICommandHandler> handlerlist = ArrayListMultimap.create();//list of all registered CommandHandler
|
||||||
|
|
||||||
public CommandManager() { }
|
public CommandManager() { }
|
||||||
|
|
||||||
public void onCommand(String line, TUser sender, JSONObject json) {//called by the api (/-prefix already removed)
|
public void onCommand(String line, TUser sender, TMessage json) {//called by the api (/-prefix already removed)
|
||||||
line = line.trim();
|
line = line.trim();
|
||||||
String[] split = line.split(" ",2);
|
String[] split = line.split(" ",2);
|
||||||
String cmd = split[0].toLowerCase();
|
String cmd = split[0].toLowerCase();
|
||||||
|
@ -30,12 +29,12 @@ public class CommandManager {
|
||||||
}
|
}
|
||||||
//call
|
//call
|
||||||
// System.out.println("cmd " + cmd + " args: " + args.length);
|
// System.out.println("cmd " + cmd + " args: " + args.length);
|
||||||
for(CommandHandler cmdhand : handlerlist.get(cmd)) {
|
for(ICommandHandler cmdhand : handlerlist.get(cmd)) {
|
||||||
try {
|
try {
|
||||||
if(cmdhand instanceof JSONCommandHandler) {
|
if(cmdhand instanceof JSONCommandHandler) {
|
||||||
result = ((JSONCommandHandler) cmdhand).onCommand(sender, cmd, args, json);
|
result = ((JSONCommandHandler) cmdhand).onCommand(sender, cmd, args, json);
|
||||||
} else {
|
} else if( cmdhand instanceof CommandHandler){
|
||||||
result = cmdhand.onCommand(sender, cmd, args);
|
result = ((CommandHandler) cmdhand).onCommand(sender, cmd, args);
|
||||||
}
|
}
|
||||||
if(result)
|
if(result)
|
||||||
break;
|
break;
|
||||||
|
@ -51,7 +50,7 @@ public class CommandManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerCommand(String cmd, CommandHandler handler) {
|
public void registerCommand(String cmd, ICommandHandler handler) {
|
||||||
if(cmd == null) {
|
if(cmd == null) {
|
||||||
throw new NullPointerException("cmd is not allowed to be null");
|
throw new NullPointerException("cmd is not allowed to be null");
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package de.mrbesen.telegram.commands;
|
||||||
|
|
||||||
|
public interface ICommandHandler {
|
||||||
|
|
||||||
|
}
|
|
@ -1,10 +1,9 @@
|
||||||
package de.mrbesen.telegram.commands;
|
package de.mrbesen.telegram.commands;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import de.mrbesen.telegram.objects.TMessage;
|
||||||
|
|
||||||
import de.mrbesen.telegram.objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
|
||||||
public interface JSONCommandHandler extends CommandHandler {
|
public interface JSONCommandHandler extends ICommandHandler {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should return true, if the command is handled correctly, false if the help menu should be displayed
|
* Should return true, if the command is handled correctly, false if the help menu should be displayed
|
||||||
|
@ -14,6 +13,6 @@ public interface JSONCommandHandler extends CommandHandler {
|
||||||
* @param json
|
* @param json
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public boolean onCommand(TUser sender, String cmd, String[] args, JSONObject json);
|
public boolean onCommand(TUser sender, String cmd, String[] args, TMessage json);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,6 @@ package de.mrbesen.telegram.objects;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import de.mrbesen.telegram.objects.JSONBased.Member;
|
|
||||||
|
|
||||||
public class TAudio extends TDocument {
|
public class TAudio extends TDocument {
|
||||||
private int duration;
|
private int duration;
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,7 @@ public class TMessage extends JSONBased {
|
||||||
|
|
||||||
if(json.has("text") )
|
if(json.has("text") )
|
||||||
text = json.getString("text");
|
text = json.getString("text");
|
||||||
|
|
||||||
allowedmembers = new Member[] {Member.forward_from_message_id, Member.forward_signature, Member.forward_date, Member.reply_to_message, Member.edit_date, Member.media_group_id, Member.author_signature, Member.author_signature, Member.audio, Member.document, Member.game, Member.photo, Member.sticker, Member.video, Member.voice, Member.video_note, Member.caption, Member.contact, Member.location, Member.venue, Member.new_chat_members, Member.left_chat_members, Member.new_chat_title, Member.new_chat_photo, Member.delete_chat_photo, Member.group_chat_created, Member.supergroup_chat_created, Member.channel_chat_created, Member.migrate_from_chat_id, Member.migrate_to_chat_id, Member.pinned_message, Member.invoice, Member.successful_payment, Member.connected_website, Member.chat};
|
allowedmembers = new Member[] {Member.forward_from_message_id, Member.forward_signature, Member.forward_date, Member.reply_to_message, Member.edit_date, Member.media_group_id, Member.author_signature, Member.author_signature, Member.audio, Member.document, Member.game, Member.photo, Member.sticker, Member.video, Member.voice, Member.video_note, Member.caption, Member.contact, Member.location, Member.venue, Member.new_chat_members, Member.left_chat_members, Member.new_chat_title, Member.new_chat_photo, Member.delete_chat_photo, Member.group_chat_created, Member.supergroup_chat_created, Member.channel_chat_created, Member.migrate_from_chat_id, Member.migrate_to_chat_id, Member.pinned_message, Member.invoice, Member.successful_payment, Member.connected_website, Member.chat};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package de.mrbesen.test.commands;
|
package de.mrbesen.test.commands;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import de.mrbesen.telegram.commands.CommandHandler;
|
import de.mrbesen.telegram.commands.CommandHandler;
|
||||||
import de.mrbesen.telegram.objects.TReplyKeyboardRemove;
|
import de.mrbesen.telegram.objects.TReplyKeyboardRemove;
|
||||||
import de.mrbesen.telegram.objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
|
|
||||||
package de.mrbesen.test.commands;
|
package de.mrbesen.test.commands;
|
||||||
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import de.mrbesen.telegram.commands.CommandHandler;
|
import de.mrbesen.telegram.commands.CommandHandler;
|
||||||
import de.mrbesen.telegram.objects.TReplyKeyboardMarkup;
|
import de.mrbesen.telegram.objects.TReplyKeyboardMarkup;
|
||||||
import de.mrbesen.telegram.objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
|
|
@ -3,6 +3,7 @@ package de.mrbesen.test.commands;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import de.mrbesen.telegram.commands.CommandHandler;
|
import de.mrbesen.telegram.commands.CommandHandler;
|
||||||
|
import de.mrbesen.telegram.commands.ICommandHandler;
|
||||||
import de.mrbesen.telegram.objects.TUser;
|
import de.mrbesen.telegram.objects.TUser;
|
||||||
|
|
||||||
public class SimpleTestCase implements CommandHandler {
|
public class SimpleTestCase implements CommandHandler {
|
||||||
|
|
Loading…
Reference in New Issue