10 |
|
import java.io.*; |
11 |
|
import java.net.*; |
12 |
|
import java.util.*; |
13 |
+ |
import java.text.*; |
14 |
|
|
15 |
|
/** |
16 |
|
* This Alert sends an IRC message. |
49 |
|
// connect to the IRC server |
50 |
|
_ircbot = new IRCBot(); |
51 |
|
_ircbot.start(); |
52 |
+ |
_startTime = System.currentTimeMillis(); |
53 |
|
|
54 |
|
_logger.write(toString(), Logger.SYSINIT, "IRC Alerter started"); |
55 |
|
} |
80 |
|
_logger.write(toString(), Logger.DEBUG, "Sending " + _name + " at "+ alertType + " level"); |
81 |
|
_ircbot.sendMsg(message); |
82 |
|
_lastAlert = message; |
83 |
+ |
_lastAlertTime = System.currentTimeMillis(); |
84 |
+ |
_alertCount ++; |
85 |
|
} |
86 |
|
} |
87 |
|
} |
143 |
|
private String _lastAlert = "no alerts have been sent"; |
144 |
|
|
145 |
|
/** |
146 |
+ |
* The time of the last alert |
147 |
+ |
*/ |
148 |
+ |
private long _lastAlertTime = -1; |
149 |
+ |
|
150 |
+ |
/** |
151 |
+ |
* Number of alerts sent |
152 |
+ |
*/ |
153 |
+ |
private long _alertCount = 0; |
154 |
+ |
|
155 |
+ |
/** |
156 |
+ |
* Time of IRCBot startup |
157 |
+ |
*/ |
158 |
+ |
private long _startTime; |
159 |
+ |
|
160 |
+ |
/** |
161 |
|
* This is the friendly identifier of the |
162 |
|
* component this class is running in. |
163 |
|
* eg, a Filter may be called "filter1", |
388 |
|
_socketOut.println("PONG" + line.substring(4)); |
389 |
|
} |
390 |
|
// see if it's for us |
391 |
< |
else if(getMsg(line).startsWith(_nickname)) { |
391 |
> |
else if(getMsg(line).startsWith(_nickname+",") |
392 |
> |
|| getMsg(line).startsWith(_nickname+":") |
393 |
> |
|| getMsg(line).startsWith(_nickname+" ")) { |
394 |
|
// we have a message for us |
395 |
|
String message = getMsg(line).substring(_nickname.length()); |
396 |
|
if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.stopCommand"))!=-1) { |
401 |
|
_active = true; |
402 |
|
sendMsg(getMsgSender(line)+", alerts have been activated"); |
403 |
|
} |
404 |
+ |
// this needs to go here if it contains the same words as the lastAlertCommand |
405 |
+ |
else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.timeSinceLastAlertCommand"))!=-1) { |
406 |
+ |
if(_lastAlertTime != -1) { |
407 |
+ |
long uptime = (System.currentTimeMillis() - _lastAlertTime) / 1000; |
408 |
+ |
String uptimeText = DateUtils.formatTime(uptime, "%DAYS% days, %HOURS% hours, %MINS% mins, and %SECS% secs"); |
409 |
+ |
sendMsg(getMsgSender(line)+", I last sent an alert "+uptimeText+ " ago"); |
410 |
+ |
} |
411 |
+ |
else { |
412 |
+ |
sendMsg(getMsgSender(line)+", I've never sent an alert!"); |
413 |
+ |
} |
414 |
+ |
} |
415 |
|
else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.lastAlertCommand"))!=-1) { |
416 |
< |
sendMsg(getMsgSender(line)+", last alert was: "+_lastAlert); |
416 |
> |
if(_lastAlertTime != -1) { |
417 |
> |
String date = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.UK).format(new Date(_lastAlertTime)); |
418 |
> |
sendMsg(getMsgSender(line)+", last alert was at "+date+"; "+_lastAlert); |
419 |
> |
} |
420 |
> |
else { |
421 |
> |
sendMsg(getMsgSender(line)+", I've never sent an alert!"); |
422 |
> |
} |
423 |
> |
|
424 |
|
} |
425 |
|
else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.joinCommand"))!=-1) { |
426 |
|
String joinCmd = cp.getProperty(_name, "Alerter.IRC.joinCommand"); |
435 |
|
_socketOut.println("JOIN "+newChan); |
436 |
|
_channel = newChan; |
437 |
|
} |
438 |
+ |
else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.nickChangeCommand"))!=-1) { |
439 |
+ |
String nickChangeCmd = cp.getProperty(_name, "Alerter.IRC.nickChangeCommand"); |
440 |
+ |
String newNick = message.substring(message.indexOf(nickChangeCmd) + nickChangeCmd.length() + 1); |
441 |
+ |
int endOfNick = newNick.indexOf(" "); |
442 |
+ |
if(endOfNick == -1) { |
443 |
+ |
endOfNick = newNick.length(); |
444 |
+ |
} |
445 |
+ |
newNick = newNick.substring(0, endOfNick); |
446 |
+ |
sendMsg(getMsgSender(line)+", okay, changing my nickname to "+newNick); |
447 |
+ |
_socketOut.println("NICK "+newNick); |
448 |
+ |
_nickname = newNick; |
449 |
+ |
} |
450 |
|
else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.helpCommand"))!=-1) { |
451 |
|
sendPrivMsg(getMsgSender(line), "I am the i-scream alerting bot revision "+REVISION.substring(11, REVISION.length() -2)); |
452 |
|
sendPrivMsg(getMsgSender(line), "I understand the following commands;"); |
453 |
|
sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.stopCommand")); |
454 |
|
sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.startCommand")); |
455 |
|
sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.lastAlertCommand")); |
456 |
+ |
sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.joinCommand")); |
457 |
+ |
sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.nickChangeCommand")); |
458 |
+ |
sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.statCommand")); |
459 |
+ |
sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.uptimeCommand")); |
460 |
+ |
sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.timeSinceLastAlertCommand")); |
461 |
+ |
sendPrivMsg(getMsgSender(line), cp.getProperty(_name, "Alerter.IRC.helpCommand")); |
462 |
+ |
} |
463 |
+ |
else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.statCommand"))!=-1) { |
464 |
+ |
sendMsg(getMsgSender(line)+", I have sent a total of "+_alertCount+" alerts!"); |
465 |
+ |
} |
466 |
+ |
else if(message.indexOf(cp.getProperty(_name, "Alerter.IRC.uptimeCommand"))!=-1) { |
467 |
+ |
long uptime = (System.currentTimeMillis() - _startTime) / 1000; |
468 |
+ |
String uptimeText = DateUtils.formatTime(uptime, "%DAYS% days, %HOURS% hours, %MINS% mins, and %SECS% secs"); |
469 |
+ |
sendMsg(getMsgSender(line)+", I have been running for "+uptimeText); |
470 |
|
} |
471 |
|
else if(message.indexOf("do a jibble dance")!=-1) { |
472 |
|
// little joke :) |