Java TwitchBot/PircBot не может читать команды в текстовом файле, как это должно делать

Я начинаю кодировать свой собственный TwitchBot в java, Бот работает нормально, так что моя идея состояла в том, чтобы заменить жестко запрограммированные команды переменными. Команды и сообщения сохраняются в текстовом файле.

BufferedReader Класс:

try {
            reader = new BufferedReader(new FileReader("censored//lucky.txt"));
            String line = reader.readLine();
            while (line != null) {

                String arr[] = line.split(" ", 2);

                command = arr[0];
                message = arr[1];

                line = reader.readLine();
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

Фрагмент моего bot/command class

if(message.toLowerCase().contains(BufferedReader.command)) {
            sendMessage(channel, BufferedReader.message);
        }

мой .txt файл:

!test1 Argument1 Argument2
!test2 Argument1 Argument2
!test3 Argument1 Argument2
!test4 Argument1 Argument2

Все отлично работает когда у меня только 1 command+message / line в моем текстовом документе, но когда есть несколько строк, я не могу получить доступ к командам в Twitch Chat, Я знаю, что команды складываются как !test1!test2!test3!test это.

Итак, мой вопрос, как мне избежать этого? И я боюсь, что в моем действительном коде !test3 использует сообщение от моего !test1 команда.

1 ответ

Решение
while (line != null) 
{
   String arr[] = line.split(" ", 2);
   command = arr[0];
   message = arr[1];
   line = reader.readLine();
}

этот цикл продолжает читать каждую строку из файла и перезаписывает содержимое command а также message, это означает, что если у вас есть несколько команд в файле - преобладает только последняя строка.

Если вы хотите сохранить несколько команд / сообщений, тогда command/message переменные должны быть типа java.util.List или же HashMap, И тогда вы можете сопоставить на основе содержимого.

Например.,

Map<String,String> msgMap = new HashMap<>();
while (line != null) 
    {
       String arr[] = line.split(" ", 2);
       if(arr[0]!=null)
         msgMap.put(arr[0],arr[1]);
       line = reader.readLine();
    }
Другие вопросы по тегам