package org.mcupdater.ravenbot.features;
import org.mcupdater.ravenbot.AbstractListener;
import org.mcupdater.ravenbot.RavenBot;
import org.pircbotx.User;
import org.pircbotx.hooks.events.MessageEvent;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class WatcherHandler extends AbstractListener
{
@Override
public void onMessage(final MessageEvent event) {
User sender = event.getUser();
try {
PreparedStatement updateSeen = RavenBot.getInstance().getPreparedStatement("updateLastSeen");
updateSeen.setString(1, sender.getNick());
updateSeen.setLong(2, System.currentTimeMillis());
updateSeen.execute();
} catch (Exception e) {
e.printStackTrace();
}
super.onMessage(event);
}
@Override
public void handleCommand(String sender, MessageEvent event, String command, String[] args) {
if (command.equals(".seen")) {
try {
PreparedStatement getSeen = RavenBot.getInstance().getPreparedStatement("getLastSeen");
String[] splitMessage = event.getMessage().split(" ");
String target = splitMessage[1];
getSeen.setString(1, target);
ResultSet results = getSeen.executeQuery();
if (results.next()) {
event.respond(target + " was last seen " + formatTime(System.currentTimeMillis() - results.getLong(1)) + "ago.");
} else {
event.respond(target + " has not been seen.");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private String formatTime(long delta) {
StringBuilder duration = new StringBuilder();
if (delta > 86400000L) {
duration.append(Long.toString(delta / 86400000L)).append("d ");
delta = delta % 86400000L;
}
if (delta > 3600000L) {
duration.append(Long.toString(delta / 3600000L)).append("h ");
delta = delta % 3600000L;
}
if (delta > 60000L) {
duration.append(Long.toString(delta / 60000L)).append("m ");
delta = delta % 60000L;
}
if (delta > 1000L) {
duration.append(Long.toString(delta / 1000L)).append("s ");
}
if (duration.length() == 0) {
duration.append("0s ");
}
return duration.toString();
}
@Override
protected void initCommands() {
}
}