package net.bavrd.limbs;
import java.util.Collections;
import java.util.Map;
import org.vertx.java.core.Handler;
import org.vertx.java.core.eventbus.Message;
import org.vertx.java.core.json.JsonObject;
import org.vertx.java.core.shareddata.ConcurrentSharedMap;
import net.bavrd.core.BavrdComponent;
import net.bavrd.core.BavrdVerticle;
import net.bavrd.core.EventEnum;
import net.bavrd.core.FaceMessage;
import net.bavrd.utils.HelpUtils;
public class Help extends BavrdVerticle {
@Override
public void startBavrd() {
vertx.eventBus().registerHandler(EventEnum.INCOMING.vertxEndpoint, new Handler<Message<JsonObject>>() {
@Override
public void handle(Message<JsonObject> m) {
FaceMessage fm = FaceMessage.decodeFrom(m.body());
if ("help".equalsIgnoreCase(fm.message)) {
StringBuffer help = new StringBuffer();
help.append("<b>Hello ").append(fm.userName)
.append(", I'm <i>").append(container.config().getString("botName")).append("</i>")
.append(" and I know the following commands</b> :");
//get the global help map, deserialize each entry and format it for display
ConcurrentSharedMap<String, String> globalHelpMap = vertx.sharedData().getMap(HelpUtils.SHARED_DATA_HELP);
for (String serializedHelpMap : globalHelpMap.values()) {
Map<String, String> helpMap = HelpUtils.deserializeHelp(serializedHelpMap);
for (Map.Entry<String, String> e : helpMap.entrySet()) {
help.append("<br/><code>").append(e.getKey()).append("</code> - ").append(e.getValue());
}
}
FaceMessage response = fm.reply(help.toString());
vertx.eventBus().send(EventEnum.OUTGOING.vertxEndpoint, response.asJson());
}
}
});
}
@Override
public BavrdComponent getType() {
return BavrdComponent.LIMB;
}
@Override
public Map<String, String> getHelp() {
return Collections.singletonMap("help", "lists all my registered commands");
}
}