Help.java 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package actions;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import main.Bot;
  5. public class Help extends Action {
  6. public Help(Bot b) {
  7. super(b);
  8. List<String> kw = new ArrayList<>(3);
  9. kw.add("help");
  10. kw.add("?");
  11. this.keyWords = kw;
  12. }
  13. @Override
  14. public void react(String channel, String sender, String login, String hostname, String message) {
  15. List<Action> l = Action.getAllActions((Bot) bot);
  16. boolean hasreacted = false;
  17. String commandeSansEspaces = message.replaceAll("\\s", "").substring(1); // On enleve les espaces et le +
  18. if(commandeSansEspaces.toLowerCase().equals("help")) {
  19. bot.sendMessage(channel, help());
  20. afficheListeCommandes(l, channel);
  21. hasreacted = true;
  22. }else {
  23. String commande = message.substring(message.indexOf(' ')+1);
  24. if(commande.indexOf(' ') != -1) {
  25. commande = commande.substring(0,commande.indexOf(' '));
  26. }
  27. commande = commande.replace("+", "");
  28. for(Action a : l) {
  29. if(a.keyWords.contains(commande) && hasreacted == false) {
  30. String msg = "";
  31. for(String s : a.keyWords) {
  32. msg+=Action.CARACTERE_COMMANDE+s+" ";
  33. }
  34. msg += a.help();
  35. bot.sendMessage(channel, msg);
  36. hasreacted = true;
  37. }
  38. }
  39. }
  40. // Si il n'as pas encore réagi
  41. if(!hasreacted) {
  42. bot.sendMessage(channel, "Commande inconnue.");
  43. afficheListeCommandes(l, channel);
  44. }
  45. }
  46. private void afficheListeCommandes(List<Action> l, String channel) {
  47. String listeCommandes="Voici la liste des commandes: ";
  48. for(Action a : l) {
  49. listeCommandes += CARACTERE_COMMANDE+a.keyWords.get(0)+" ";
  50. }
  51. bot.sendMessage(channel, listeCommandes);
  52. }
  53. @Override
  54. public String help() {
  55. return "Utilisez "+CARACTERE_COMMANDE+"help <commande> Pour avoir les informations sur une commande.";
  56. }
  57. }