2016-04-05 9 views
-1

Wenn "the_pvbro" einen Befehl im Chat eingeben möchte, kann der Bot ihn nicht benutzen. und ich bin zu faul, um eine neue Klasse für jeden neuen Mod zu erstellen, den ich hinzufüge. Also hat jemand eine Idee vielleicht, wie es anders geht?Mein Bot akzeptiert mein String-Array für Mod nicht. Weiß jemand, was damit falsch ist?

import org.jibble.pircbot.*; 

public class TwitchBot erweitert PircBot {

public TwitchBot(){ 
    this.setName("rayibot"); 

    this.isConnected(); 
} 

String owner = "skalrayi"; 
String mod [] = new String[3];{ 
    mod[0] = "the_pvbro"; 
} 


public void onMessage(String channel, String sender, String login, String hostname, String message){ 
    if(message.equalsIgnoreCase("!spiel")){ 
     sendMessage(channel, "Aktuell wird " + Config.currentGame + " gespielt."); 
    } 

    else 
    if(message.equalsIgnoreCase("!song")){ 
     sendMessage(channel, "Aktueller Song:"); 

    } 

    else 
    if(message.equalsIgnoreCase("!hallo")){ 
     sendMessage(channel, "Hallo wie geht es dir denn heute so " +sender); 
    } 

    else 
    if(message.startsWith("!kick")){ 
     if(sender.equals(owner) || sender.equals(mod)) 
     { 

      String userToKick = message.split(" ")[1]; 
      kick(channel, userToKick); 
      sendMessage(channel, ".timeout " +userToKick + " 60"); 
      sendMessage(channel, userToKick +" wurde aus dem Channel gekickt!"); 
     } 

     else{ 
      sendMessage(channel, "Deine Rechte reichen nicht aus, um diesen Befehl zu benutzen! " + sender); 
     } 
    } 

    if (message.startsWith("!ban")) { 
      if(sender.equals(owner)|| sender.equals(mod)) 
      { 
       String userToBan = message.split(" ")[1]; 
       ban(channel, userToBan); 
       sendMessage(channel, ".ban " + userToBan); 
       sendMessage(channel, userToBan + " wurde aus dem Channel verbannt!"); 
      } 
      else{ 
       sendMessage(channel, "Deine Rechte reichen nicht aus, um diesen Befehl zu benutzen! " + sender); 
      } 
     } 


    } 

} 

Antwort

0

Gerade jetzt Sie die String Sender gegen die Mod-Array zu vergleichen. Dies liefert immer false, da ein String kein Array ist. Was Sie tun möchten, ist zu überprüfen, ob das Mod-Array die Sender-Zeichenfolge enthält.

Was ich tun würde, ist eine Liste verwenden anstelle eines Arrays durch Ersetzen:

String mod [] = new String[3];{ 
    mod[0] = "the_pvbro"; 
} 

mit

List<String> mod = Arrays.asList("the_pvbro"); 

Dann werden Sie in der Lage sein, die contains Methode zu verwenden, durch das Ersetzen:

sender.equals(mod) 

mit

diese Weise, wenn Sie mehr Mods zu bekommen, können Sie sie nur Arrays.asList() auf die Argumente hinzufügen, d.h .:

List<String> mod = Arrays.asList(
    "the_pvbro", 
    "mod2", 
    "mod3"); 
+0

Dank für die Beantwortung und zu erklären. Alles funktioniert jetzt gut, – Skalrayi

+0

@Skalrayi Kein Problem. Ziehen Sie in Erwägung, auf das Häkchen unter den Abstimmschaltflächen zu klicken, wenn Sie das Gefühl haben, dass ich Ihre Frage ausreichend beantwortet habe :) – gla3dr