Мой бот не принимает мой массив строк для мод. кто-нибудь знает, что с ним не так?

Когда "the_pvbro" хочет набрать команду в чате, бот не позволяет ему использовать ее. и мне лень создавать новый класс для каждого нового мода, который я добавляю. так у кого-нибудь есть идея, может быть, как это сделать по-другому?

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


    }

}

1 ответ

Решение

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

Я бы использовал список вместо массива, заменив:

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");
Другие вопросы по тегам