Java TwitchBot/PircBot 无法像它必须的那样读取 .txt 文件中的命令

Java TwitchBot/PircBot can't read commands in a .txt file like it has to do

我在 java 开始编写自己的 TwitchBot。机器人工作正常,所以我的想法是用变量替换硬编码命令。命令和消息保存在文本文件中。

BufferedReader Class:

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 命令的消息。

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

此循环不断读取文件中的每一行并覆盖 commandmessage 的内容,这意味着当文件中有多个命令时 - 只有最后一行占上风。

如果要存储多个 commands/messages,则 command/message 变量必须是 java.util.ListHashMap 类型。然后你可以根据内容进行匹配。

例如,

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