2016-04-05 4 views
-1

, когда «the_pvbro» хочет ввести команду в чате, бот не позволяет ему использовать ее. и я слишком ленив, чтобы создать новый класс для каждого нового mod i add. так у кого-нибудь есть идея, может быть, как это сделать иначе?мой бот не принимает мой массив строк для мод. кто-нибудь знает, что с ним не так?

import org.jibble.pircbot.*; 

общественного класс TwitchBot расширяет 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); 
      } 
     } 


    } 

} 

ответ

0

Прямо сейчас вы сравниваете String отправителя против мода массива. Это всегда будет возвращать false, так как String не является массивом. То, что вы хотите сделать, это проверить, находится ли массив мод строка отправителя.

Что я хотел бы сделать, это использовать список вместо массива путем замены:

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

с

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

Тогда вы будете иметь возможность использовать метод contains путем замены:

sender.equals(mod) 

с

mod.contains(sender); 

Таким образом, когда вы получаете больше модов, вы можете просто добавить их в аргументы Arrays.asList(), т.е .:

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

спасибо за ответы и разъяснения. теперь все работает нормально, – Skalrayi

+0

@Skalrayi Нет проблем. Подумайте о том, чтобы щелкнуть галочку под кнопками голосования, если вы чувствуете, что я достаточно ответил на ваш вопрос :) – gla3dr