Package silvertrout.plugins.adminboy

Source Code of silvertrout.plugins.adminboy.AdminBoy

/*   _______ __ __                    _______                    __
*  |     __|__|  |.--.--.-----.----.|_     _|.----.-----.--.--.|  |_
*  |__     |  |  ||  |  |  -__|   _|  |   |  |   _|  _  |  |  ||   _|
*  |_______|__|__| \___/|_____|__|    |___|  |__| |_____|_____||____|
*
*  Copyright 2008 - Gustav Tiger, Henrik Steen and Gustav "Gussoh" Sohtell
*
*  This program is free software: you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation, either version 3 of the License, or
*  (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
*/

package silvertrout.plugins.adminboy;

import silvertrout.User;
import silvertrout.Channel;
import silvertrout.Modes;

import java.util.Iterator;
import java.util.Map;

/**
*
**
*/
public class AdminBoy extends silvertrout.Plugin {

  // Password for AdminBoy
  private String password;

  @Override
  public void onPrivmsg(User user, String message) {
    System.out.println("AB: onPrivmsg(u, m) = (" + user + ", " + message + ")");

    String[] parts = message.split("\\s");
    if(parts.length > 1 && parts[0].equals(password)) {
      String cmd = parts[1].toLowerCase();

      // Channel commandos: (!op, !kick, !etc)
      if(parts.length > 3 && (cmd.equals("!kick")
          || cmd.equals("!deop") || cmd.equals("!op")
          || cmd.equals("!voice") || cmd.equals("!devoice")
          || cmd.equals("!halfop") || cmd.equals("!dehalfop"))){

        parts = message.split("\\s", 4);

        if(getNetwork().isInChannel(parts[2])) {
          Channel chan = getNetwork().getChannel(parts[2]);
          User    usr  = getNetwork().getUser(parts[3]);
          String  rest = ""; if(parts.length > 4)rest = parts[4];

          if(cmd.equals("!kick")) {
            chan.kick(usr, rest);
          } else if(cmd.equals("!op")) {
            chan.giveOp(usr);
          } else if(cmd.equals("!deop")) {
            chan.deOp(usr);
          } else if(cmd.equals("!voice")) {
            chan.giveVoice(usr);
          } else if(cmd.equals("!devoice")) {
            chan.deVoice(usr);
          } else if(cmd.equals("!halfop")) {
            chan.deHalfOp(usr);
          } else if(cmd.equals("!dehalfop")) {
            chan.giveHalfOp(usr);
          }
        }
      // Help commands:
      } else if(parts.length >= 2 && cmd.equals("!help")) {
        if(parts.length > 2) {
          user.sendPrivmsg(getHelp(parts[2]));
        } else {
          user.sendPrivmsg(getHelp());
        }
      // Single commands: (!listplugins, !channels, etc)
      } else if(parts.length == 2) {
        if(cmd.equals("!listplugins")) {
          int number = 1;
          for(String p: getNetwork().getPlugins().keySet()) {
            user.sendPrivmsg("#" + (number++) + " - " + p);
          }
        } else if(cmd.equals("!channels")) {
          user.sendPrivmsg("I am in " + getNetwork().getChannels().size() + " channels:");
          for(Channel c: getNetwork().getChannels()) {
            user.sendPrivmsg("* " + c.getName() + " (" + c.getTopic() + ")");
          }
        }

      // Network commands:
      } else if(parts.length > 2) {
        if(cmd.equals("!join")) {

            if(!getNetwork().isInChannel(parts[2])) {
                user.sendPrivmsg("Jag mår bra när jag får vara i " + parts[2] + ".");
                getNetwork().getConnection().join(parts[2]);
            } else {
                user.sendPrivmsg("Jag är redan i " + parts[2] + ".");
            }
        } else if(cmd.equals("!part")) {
            if(getNetwork().isInChannel(parts[2])) {
                user.sendPrivmsg("Tråkigt att du inte vill ha mig kvar i " + parts[2] +".");
                getNetwork().getConnection().part(parts[2]);
            } else {
                user.sendPrivmsg("Jag är inte i " + parts[2] +".");
            }

        } else if(cmd.equals("!loadplugin")) {

            if(getNetwork().loadPlugin(parts[2])) {
                user.sendPrivmsg(parts[2] + " har laddats.");
            } else {
                user.sendPrivmsg(parts[2] + " kunde inte laddas");
            }
        } else if(cmd.equals("!unloadplugin")) {

            if(getNetwork().unloadPlugin(parts[2])) {
                user.sendPrivmsg(parts[2] +" har avaktiverats.");
            } else {
                user.sendPrivmsg(parts[2] + " kunde inte laddas");
            }
        } else if(cmd.equals("!users")) {
            Channel chan = getNetwork().getChannel(parts[2]);
            user.sendPrivmsg(chan.getName() + " har "
                + chan.getUsers().size() + " användare");
            String  usrlst  = "";
            for(Map.Entry<User, Modes> ue: chan.getUsers().entrySet()) {
              usrlst += ue.getKey().getNickname() + "[" + ue.getValue().get() + "], ";
            }
            user.sendPrivmsg(usrlst);
          }

      // Unknown commands:
      } else {
        user.sendPrivmsg("Kommandot " + cmd + " kan inte hanteras av mig");
      }

    }
  }

    @Override
    public void onLoad(Map<String,String> settings){
        password = settings.get("password");
        if(password == null) password = "password";
    }

  private String getHelp() {
    return "Just nu finns följande kommandon tillgängliga: !join !part " +
        "!loadplugin !unloadplugin !channels !listplugins !users !op !deop " +
        "!voice !devoice !kick";
  }

  private String getHelp(String command){
    if(command.equals("!help") || command.equals("help"))
      return "!help [kommando]: Returnerar kommandolista, alternativt hjälptext för det givna kommando.";
    else if(command.equals("!part") || command.equals("part"))
      return "!part [#kanal]: Kommenderar jbt att lämna en bestämd kanal.";
    else if(command.equals("!join") || command.equals("join"))
      return "!part [#kanal]: Beordrar jbt att ansluta sig till en ny kanal.";
    else if(command.equals("!loadplugin") || command.equals("loadplugin"))
      return "!loadplugin [plugin]: Befaller jbt att ladda ett nytt plugin.";
    else if(command.equals("!unloadplugin") || command.equals("unloadplugin"))
      return "!unloadplugin [plugin]: Ger jpb i uppdrag att lossa en bestämd insticksmodul.";
    else if(command.equals("!channels") || command.equals("channels"))
      return "!channels: Listar de kanaler som jbt är aktiv på.";
    else if(command.equals("!listplugins") || command.equals("listplugins"))
      return "!listplugins: Listar de insticksmoduler som är laddade på nätverket.";
    else if (command.equals("!users") || command.equals("users"))
      return "!users [#kanal]: Listar användare (och deras lägen) i en kanal där jbt finns";
    else
      return "Känner nog inte riktigt till det där kommandot, prata med Tigge så fixar han det. :)";
  }


}
TOP

Related Classes of silvertrout.plugins.adminboy.AdminBoy

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.