import com.aol.acc.*; import java.util.*; import java.util.regex.*; public class accjbot implements AccEvents { AccSession session; boolean running = true; String key = "accjbot (Key:mo1hC594Jyv8-wX2)"; String signOffPassword = "nowPlease"; Vector regexps = new Vector(); long start = new Date().getTime(); public static void main(String[] args) { if(args.length != 2) { System.out.print("usage: java accjbot username password"); return; } try { new accjbot(args[0], args[1]); } catch (AccException e) { System.out.println("Main AccException, hr: "+e.errorCode); e.printStackTrace(); } } public accjbot(String username, String password) throws AccException { // Create main session object session = new AccSession(); // Add event listener session.setEventListener(this); // set key AccClientInfo info = session.getClientInfo(); info.setDescription(key); // set screen name session.setIdentity(username); // setup prefs so anyone can IM us, but not chats or DIMs session.setPrefsHook(new Prefs()); AccPreferences prefs = session.getPrefs(); prefs.setValue("aimcc.im.chat.permissions.buddies", AccPermissions.RejectAll); prefs.setValue("aimcc.im.chat.permissions.nonBuddies", AccPermissions.RejectAll); prefs.setValue("aimcc.im.direct.permissions.buddies", AccPermissions.RejectAll); prefs.setValue("aimcc.im.direct.permissions.nonBuddies", AccPermissions.RejectAll); prefs.setValue("aimcc.im.standard.permissions.buddies", AccPermissions.AcceptAll); prefs.setValue("aimcc.im.standard.permissions.nonBuddies", AccPermissions.AcceptAll); session.signOn(password); //msg pump while( running ) { try { AccSession.pump(50); } catch (Exception e) { e.printStackTrace(); } try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } info = null; session = null; prefs = null; System.gc(); System.runFinalization(); } public void OnImReceived(AccSession session, AccImSession imSession, AccParticipant participant, AccIm im) { try { String richText = im.getConvertedText("application/xhtml+xml"); String msg = im.getConvertedText("text/plain"); String errors = ""; if(msg.equals("stats")) { long diff = (new Date()).getTime() - start; diff /= 1000; // convert to seconds long days = diff/86400; diff = diff - 86400*days; long hours = diff/3600; diff = diff - 3600*hours; long minutes = diff/60; richText = "Running for "+days+" day"+ ((days!=1)?"s":"")+", "+hours+" hour"+((hours!=1)?"s":"")+", "+minutes+" minute"+((minutes!=1)?"s":"")+"."; } else if(msg.startsWith("list")) { richText = "List of regexps:
"; for(String regexp : regexps) { richText += regexp+"
"; } } else if(msg.startsWith("remove")) { int i = msg.indexOf(" "); if(i != -1) { String message = msg.substring(i+1); if(regexps.remove(message)) { richText = "Removed "+message+" from the list."; } else { richText = message+" not found in the list, try list to see what exists."; } } } else if(msg.startsWith("add")) { int i = msg.indexOf(" "); if(i != -1) { String message = msg.substring(i+1); regexps.remove(message); regexps.add(message); richText = "Added "+message+" to list."; } } else if(msg.startsWith("help")) { richText = "help
list
add
remove
quit"; } else if(msg.startsWith("quit")) { int i = msg.indexOf(" "); if(i != -1) { String message = msg.substring(i+1); if(message.equals(signOffPassword)) { session.signOff(); return; } } richText = "uh uh uh! you didn't say the magic word..."; } else { // respond with regexps for(String regexp : regexps) { String[] regexpArr = regexp.split(","); if(regexpArr.length != 2) { errors += "
"+regexp+" is not a properly formatted regexp, use the format regexp,replacement"; } else { try { richText = richText.replaceAll(regexpArr[0], regexpArr[1]); } catch (PatternSyntaxException ex) { errors += "
"+regexpArr[0]+", "+regexpArr[1]+", textRegex does not contain a valid regular expression" + ex.getDescription(); } catch (IllegalArgumentException ex) { errors += "
"+regexpArr[0]+", "+regexpArr[1]+", textReplace contains inapropriate dollar signs" + ex.getMessage(); } catch (IndexOutOfBoundsException ex) { errors += "
"+regexpArr[0]+", "+regexpArr[1]+", textReplace contains a backreference that does not exist (e.g. $4 if there are only three groups)" + ex.getMessage(); } catch (Exception ex) { errors += "
"+regexpArr[0]+", "+regexpArr[1]+", " + ex.getMessage(); } } } } if(running) { im.setText(richText + errors); imSession.sendIm(im); } } catch (AccException e) { System.out.println("Someone through an AccException with the HR: "+e.errorCode); e.printStackTrace(); } } public void OnStateChange(AccSession arg0, AccSessionState arg1, AccResult arg2) { System.out.println(arg1+""+arg2); if(arg1 == AccSessionState.Offline) { running = false; } } /** Unimplemented stubs **/ public void OnSessionChange(AccSession arg0, AccSessionProp arg1) { // TODO Auto-generated method stub } public void OnIdleStateChange(AccSession arg0, int arg1) { // TODO Auto-generated method stub } public void OnInstanceChange(AccSession arg0, AccInstance arg1, AccInstance arg2, AccInstanceProp arg3) { // TODO Auto-generated method stub } public void OnLookupUsersResult(AccSession arg0, String[] arg1, int arg2, AccResult arg3, AccUser[] arg4) { // TODO Auto-generated method stub } public void OnSearchDirectoryResult(AccSession arg0, int arg1, AccResult arg2, AccDirEntry arg3) { // TODO Auto-generated method stub } public void OnSendInviteMailResult(AccSession arg0, int arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnRequestServiceResult(AccSession arg0, int arg1, AccResult arg2, String arg3, int arg4, byte[] arg5) { // TODO Auto-generated method stub } public void OnConfirmAccountResult(AccSession arg0, int arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnReportUserResult(AccSession arg0, AccUser arg1, int arg2, AccResult arg3, int arg4, int arg5) { // TODO Auto-generated method stub } public void OnAlertReceived(AccSession arg0, AccAlert arg1) { // TODO Auto-generated method stub } public void OnPreferenceResult(AccSession arg0, String arg1, int arg2, String arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnPreferenceChange(AccSession arg0, String arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnPreferenceInvalid(AccSession arg0, String arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnPluginChange(AccSession arg0, AccPluginInfo arg1, AccPluginInfoProp arg2) { // TODO Auto-generated method stub } public void OnBartItemRequestPropertyResult(AccSession arg0, AccBartItem arg1, AccBartItemProp arg2, int arg3, AccResult arg4, AccVariant arg5) { // TODO Auto-generated method stub } public void OnUserRequestPropertyResult(AccSession arg0, AccUser arg1, AccUserProp arg2, int arg3, AccResult arg4, AccVariant arg5) { // TODO Auto-generated method stub } public void OnGroupAdded(AccSession arg0, AccGroup arg1, int arg2, AccResult arg3) { // TODO Auto-generated method stub } public void OnGroupRemoved(AccSession arg0, AccGroup arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnGroupMoved(AccSession arg0, AccGroup arg1, int arg2, int arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnBuddyAdded(AccSession arg0, AccGroup arg1, AccUser arg2, int arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnBuddyRemoved(AccSession arg0, AccGroup arg1, AccUser arg2, AccResult arg3) { // TODO Auto-generated method stub } public void OnBuddyMoved(AccSession arg0, AccUser arg1, AccGroup arg2, int arg3, AccGroup arg4, int arg5, AccResult arg6) { // TODO Auto-generated method stub } public void OnBuddyListChange(AccSession arg0, AccBuddyList arg1, AccBuddyListProp arg2) { // TODO Auto-generated method stub } public void OnGroupChange(AccSession arg0, AccGroup arg1, AccGroupProp arg2) { // TODO Auto-generated method stub } public void OnUserChange(AccSession arg0, AccUser arg1, AccUser arg2, AccUserProp arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnChangesBegin(AccSession arg0) { // TODO Auto-generated method stub } public void OnChangesEnd(AccSession arg0) { // TODO Auto-generated method stub } public void OnNewSecondarySession(AccSession arg0, AccSecondarySession arg1, int arg2) { // TODO Auto-generated method stub } public void OnSecondarySessionStateChange(AccSession arg0, AccSecondarySession arg1, AccSecondarySessionState arg2, AccResult arg3) { // TODO Auto-generated method stub } public void OnSecondarySessionChange(AccSession arg0, AccSecondarySession arg1, int arg2) { // TODO Auto-generated method stub } public void OnParticipantJoined(AccSession arg0, AccSecondarySession arg1, AccParticipant arg2) { // TODO Auto-generated method stub } public void OnParticipantChange(AccSession arg0, AccSecondarySession arg1, AccParticipant arg2, AccParticipant arg3, AccParticipantProp arg4) { // TODO Auto-generated method stub } public void OnParticipantLeft(AccSession arg0, AccSecondarySession arg1, AccParticipant arg2, AccResult arg3, String arg4, String arg5) { // TODO Auto-generated method stub } public void OnInviteResult(AccSession arg0, AccSecondarySession arg1, String arg2, int arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnEjectResult(AccSession arg0, AccSecondarySession arg1, String arg2, int arg3, AccResult arg4) { // TODO Auto-generated method stub } public void BeforeImSend(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3) { // TODO Auto-generated method stub } public void OnImSent(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3) { // TODO Auto-generated method stub } public void OnImSendResult(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3, AccResult arg4) { // TODO Auto-generated method stub } public void BeforeImReceived(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3) { // TODO Auto-generated method stub } public void OnInputStateChange(AccSession arg0, AccImSession arg1, String arg2, AccImInputState arg3) { // TODO Auto-generated method stub } public void OnEmbedDownloadComplete(AccSession arg0, AccImSession arg1, AccIm arg2) { // TODO Auto-generated method stub } public void OnEmbedUploadComplete(AccSession arg0, AccImSession arg1, AccIm arg2) { // TODO Auto-generated method stub } public void OnRateLimitStateChange(AccSession arg0, AccImSession arg1, AccRateState arg2) { // TODO Auto-generated method stub } public void OnNewFileXfer(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2) { // TODO Auto-generated method stub } public void OnFileXferProgress(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2) { // TODO Auto-generated method stub } public void OnFileXferCollision(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2) { // TODO Auto-generated method stub } public void OnFileXferComplete(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2, AccResult arg3) { // TODO Auto-generated method stub } public void OnFileXferSessionComplete(AccSession arg0, AccFileXferSession arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnFileSharingRequestListingResult(AccSession arg0, AccFileSharingSession arg1, AccFileSharingItem arg2, int arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnFileSharingRequestXferResult(AccSession arg0, AccFileSharingSession arg1, AccFileXferSession arg2, int arg3, AccFileXfer arg4) { // TODO Auto-generated method stub } public void OnAvStreamStateChange(AccSession arg0, AccAvSession arg1, String arg2, AccAvStreamType arg3, AccSecondarySessionState arg4, AccResult arg5) { // TODO Auto-generated method stub } public void OnAudioLevelChange(AccSession arg0, AccAvSession arg1, String arg2, int arg3) { // TODO Auto-generated method stub } public void OnSoundEffectReceived(AccSession arg0, AccAvSession arg1, String arg2, String arg3) { // TODO Auto-generated method stub } public void OnCustomDataReceived(AccSession arg0, AccCustomSession arg1, AccParticipant arg2, AccIm arg3) { // TODO Auto-generated method stub } public void OnCustomSendResult(AccSession arg0, AccCustomSession arg1, AccParticipant arg2, AccIm arg3, AccResult arg4) { // TODO Auto-generated method stub } public void OnEmbedUploadProgress(AccSession arg0, AccImSession arg1, AccIm arg2, String arg3, AccStream arg4) { // TODO Auto-generated method stub } public void OnEmbedDownloadProgress(AccSession arg0, AccImSession arg1, AccIm arg2, String arg3, AccStream arg4) { // TODO Auto-generated method stub } public void OnDeleteStoredImsResult(AccSession arg0, int arg1, AccResult arg2) { // TODO Auto-generated method stub } public void OnDeliverStoredImsResult(AccSession arg0,int arg1,AccResult arg2) { // TODO Auto-generated method stub } public void OnRequestSummariesResult(AccSession arg0,int arg1, AccResult arg2,AccVariant arg3) { // TODO Auto-generated method stub } public void OnAvManagerChange(AccSession arg0, AccAvManager arg1, AccAvManagerProp arg2, AccResult arg3) { // TODO Auto-generated method stub } public void OnLocalImReceived(AccSession arg0, AccImSession arg1, AccIm arg2) { // TODO Auto-generated method stub } }