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