2011-05-03 94 views
0

我需要一些幫助管理員和東西的陣列。我正在使用這個API來創建一個服務器機器人。你可以在這裏找到所有的類,構造函數和方法。PircBot API Java字符串分割問題

這裏是我當前的代碼:

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."); 
      } 
     } 
    } 
} 

它編譯並運行正常。它仍然在Alpha階段,但由於某種原因,它不會讀取我的命令。像: !踢出用戶 不收到迴應。

該API快速且易於理解。如果你能幫助我,那會很棒!

回答

0

現在在您的代碼中,您只使用equalsIgnoreCase 此方法要求兩個字符串都與案例完全匹配。 所以「禁止用戶」的原因不起作用是因爲以下原因。

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

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

這下面這段代碼會導致您能夠通過鍵入「!禁止用戶名」,禁止人。不過,它會區分大小寫。

 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]); 
    } 
} 

希望這有助於

+0

我想通了通過從開始!禁令,它完美地跑了!感謝您的迴應! – 2011-05-14 21:07:38