PircBot API Проблема расщепления строк Java - PullRequest
0 голосов
/ 04 мая 2011

Мне нужна помощь с массивами для администраторов и прочего. Я использую этот API для создания серверного бота. Там вы можете найти все классы, конструкторы и методы.

Вот мой текущий код:

import org.jibble.pircbot.*;

public class MyBot extends PircBot {

    public MyBot() {
        this.setName("DevilBot");
    }

    String owner = "Evan";
    public void onMessage(String channel, String sender,
                       String login, String hostname, String message) {
        if (message.equalsIgnoreCase("!time")) {
            String time = new java.util.Date().toString();
            sendMessage(channel, sender + ": The time is now " + time);
        }
        if (message.equalsIgnoreCase("!owner")) {
            if(sender.equals(owner))
            {
                sendMessage(channel, Colors.NORMAL + "You're my owner silly!");
            }
            if (!sender.equals(owner))
            {
                sendMessage(channel, Colors.NORMAL + sender + ": " + owner + " is my owner!");
            }
        }
        if (message.equalsIgnoreCase("!ban")) {
            if(sender.equals(owner))
            {
                ban(channel, message);
                sendMessage(channel, "Banned " + message);
            }
            else
            {
                kick(channel, sender);
                sendMessage(channel, "You aren't my mother!");
            }
        }
        if (message.equalsIgnoreCase("!version")) {
            sendMessage(channel, "Version 0.1");
            sendMessage(channel, "PircBot API v1.5.0");
        }
        if (message.equalsIgnoreCase("!aelux")) {
            sendMessage(channel, "ALL HAIL AELUX!");
        }
        if (message.equalsIgnoreCase("!hates")){
            sendMessage(channel, message + ", " + sender + " hates you!");
        }
        if (message.equalsIgnoreCase("!op")){
            if(sender.equals(owner))
            {
                sendMessage(channel, "Opping " + message);
            }
            else
            {
                ban(channel, sender);
                kick(channel, sender);
                sendMessage(channel, "GTFO! Banned.");
            }
        }
    }
}

Он компилируется и работает нормально. И это все еще в Альфа Стадиях, но по некоторым причинам это не будет читать мою команду. Подобно: ! пнуть пользователя Не дает ответа.

API быстр и прост для понимания. Если вы МОЖЕТЕ мне помочь, это было бы здорово!

1 Ответ

0 голосов
/ 04 мая 2011

Прямо сейчас в вашем коде вы используете только equalsIgnoreCase. Этот метод требует, чтобы обе строки полностью соответствовали регистру.Поэтому причина, по которой «! Ban user» не будет работать, заключается в следующем:

"!ban".equalsIgnoreCase("!bAn") == true 
"!ban".equalsIgnoreCase("!BaN") == true 

, но

"!ban".equalsIgnoreCase("!ban username") == false
"!ban".equalsIgnoreCase("!ban ") == false 

Этот следующий фрагмент кода даст вам возможность запретить людейнабрав "! ban username".Однако он будет чувствителен к регистру.

     if (message.startsWith("!ban")) {
        if(sender.equals(owner))
        {
            String userToBan = message.split(" ")[1];
            ban(channel, userToBan);
            sendMessage(channel, "Banned " + userToBan);
        }
        else
        {
            kick(channel, sender);
            sendMessage(channel, "You aren't my mother!");
        }
    }

Если вы не хотите, чтобы он просто разбивал входящую команду на разделитель (обычно пробел), преобразовывал первую строку и сопоставлял их с equalsIgnoreCase.

String[] messageParts = string.split();
String command = messageParts[0];

if("!ban".equalsIgnoreCase(command){
   ban(channel,messageParts[1])
   if(messageParts[2].isEmpty()){
      sendMessage(channel, "Banned " + messageParts[1]);
   }else{
      sendMessage(channel, "Banned " + messageParts[1] + " Reason: " + messageParts[2]);
   }
}

Надеюсь, это поможет

...