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();
}
此循环不断读取文件中的每一行并覆盖 command
和 message
的内容,这意味着当文件中有多个命令时 - 只有最后一行占上风。
如果要存储多个 commands/messages,则 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();
}
我在 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();
}
此循环不断读取文件中的每一行并覆盖 command
和 message
的内容,这意味着当文件中有多个命令时 - 只有最后一行占上风。
如果要存储多个 commands/messages,则 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();
}