anchor.diff:            bot.config.clear();
             bot.config.addAll(config);
             break;
  +        case "whois":
  +          var user = m['user'];
  +          b.client.send("WHOIS ${user}");
  +          break;
           default:
             throw new Exception("$plugin sent an invalid command: $command");
         }
  
positive.code:           var data = request.data["data"];
            pm.get(plugin, command, data).then((response) {
              request.reply(response);
            });
            break;
          default:
  
negative.code:       var data = common("disconnect");
        com.pm.sendAll(data);
      });
      
      b.client.register((IRC.ModeEvent e) {
        var data = common("mode");
        if (e.channel != null) {
          data['channel'] = e.channel.name;
        }
        data['mode'] = e.mode;
        data['user'] = e.user;
        com.pm.sendAll(data);
      });
      
      b.client.register((IRC.WhoisEvent event) {
        var data = common("whois");
        data['member_in'] = event.member_in;
        data['op_in'] = event.op_in;
        data['voice_in'] = event.voice_in;
        data['username'] = event.username;
        data['server_operator'] = event.server_operator;
        data['realname'] = event.realname;
        data['nickname'] = event.nickname;
        com.pm.sendAll(data);
      });
    }
  
    Map common(String event) {
  