Java TwitchBot / PircBot无法像需要那样读取.txt文件中的命令

时间:2019-08-05 02:14:42

标签: java bots bufferedreader irc 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 个答案:

答案 0 :(得分:1)

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

此循环将继续从文件读取每一行并覆盖commandmessage的内容,这意味着当文件中有多个命令时-仅最后一行占优势。

如果要存储多个命令/消息,则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();
    }