【发布时间】:2020-12-30 21:28:24
【问题描述】:
我正在使用 Pircbotx (https://github.com/pircbotx/pircbotx/wiki/Documentation) 提供的侦听器来检测何时在 Twitch 聊天中找到命令,并且我正在尝试根据调用的命令使用不同的方法(格式为 !command)。使用的类:监听器、命令。
命令存储在一个命令对象数组中,由一个字符串(名称)组成。每个 Command 对象最终都将使用其自己的方法,该方法将在 Command 类中定义。 Listeners 对象在实例化时会立即将数组的每个元素放入哈希表(命令)中。
当侦听器检测到消息时,它会使用本地字符串变量 (msg) 进行存储。发生这种情况时,循环遍历 Command 对象数组,然后......应该调用对应于该特定对象的方法,在本例中为 Command.addDeath()。这就是我卡住的地方。
我以前为我的听众使用了一堆 if 语句,但是当有一堆命令时,事情会变得非常非常混乱。如果我的代码块中的格式很奇怪,请提前道歉,我对使用 Stackverflow 还是很陌生,而且我也是一名 Java 新手,我正在学习。再次查看代码后,似乎我并不真的需要哈希表 - 但我将它留在里面以防万一你们对如何处理它们有更好的想法。
public class Listeners {
String name;
String message;
private static MessageEvent event;
Command [] commandNames = {new Command("!clearchat", new Command("!addDeath")};
Hashtable<String, Command> commands = new Hashtable<String, Command>();
public Listeners() {
for (int i = 0; i < commandNames.length; i++) {
commands.put(commandNames[i].name, new Command(commandNames[i].name));
}
if (event.getMessage() != null) {
String msg = event.getMessage();
for (int x = 0; x < commandNames.length; x++ ) {
if (msg.startsWith(commandNames[x].name)) {
// call Command method here
}
}
}
}
这里是 Command 类:
public class Command {
String name;
public Command(String name) {
this.name = name;
}
public static void addDeath() {
DeathCounter.addDeath();
Listeners.sendMessage("Death Counter: " + DeathCounter.getDeaths());
}
}
【问题讨论】:
标签: java loops listener twitch pircbot