71 lines
2.2 KiB
Java
71 lines
2.2 KiB
Java
package me.chayapak1.chomens_bot.irc;
|
|
|
|
import me.chayapak1.chomens_bot.data.IRCMessage;
|
|
|
|
// https://gist.github.com/kaecy/286f8ad334aec3fcb588516feb727772#file-messageparser-java
|
|
public class MessageParser {
|
|
public static IRCMessage message (String ircMessage) {
|
|
final IRCMessage message = new IRCMessage();
|
|
|
|
int spIndex;
|
|
|
|
if (ircMessage.startsWith(":")) {
|
|
spIndex = ircMessage.indexOf(' ');
|
|
if (spIndex > -1) {
|
|
message.origin = ircMessage.substring(1, spIndex);
|
|
ircMessage = ircMessage.substring(spIndex + 1);
|
|
|
|
int uIndex = message.origin.indexOf('!');
|
|
if (uIndex > -1) {
|
|
message.nickName = message.origin.substring(0, uIndex);
|
|
|
|
message.origin = message.origin.substring(uIndex + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
spIndex = ircMessage.indexOf(' ');
|
|
if (spIndex == -1) {
|
|
message.command = "null";
|
|
return message;
|
|
}
|
|
|
|
message.command = ircMessage.substring(0, spIndex).toLowerCase();
|
|
ircMessage = ircMessage.substring(spIndex + 1);
|
|
|
|
// parse privmsg params
|
|
if (message.command.equals("privmsg")) {
|
|
spIndex = ircMessage.indexOf(' ');
|
|
message.channel = ircMessage.substring(0, spIndex);
|
|
ircMessage = ircMessage.substring(spIndex + 1);
|
|
|
|
if (ircMessage.startsWith(":")) {
|
|
message.content = ircMessage.substring(1);
|
|
} else {
|
|
message.content = ircMessage;
|
|
}
|
|
}
|
|
|
|
// parse quit/join
|
|
if (message.command.equals("quit") || message.command.equals("join")) {
|
|
if (ircMessage.startsWith(":")) {
|
|
message.content = ircMessage.substring(1);
|
|
} else {
|
|
message.content = ircMessage;
|
|
}
|
|
}
|
|
|
|
// parse ping params
|
|
if (message.command.equals("ping")) {
|
|
spIndex = ircMessage.indexOf(' ');
|
|
if (spIndex > -1) {
|
|
message.content = ircMessage.substring(0, spIndex);
|
|
} else {
|
|
message.content = ircMessage;
|
|
}
|
|
}
|
|
|
|
return message;
|
|
}
|
|
}
|