我开始在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
命令中的消息。
答案 0 :(得分: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();
}