JAVA MSN机器人主要代码开发 一直想把这个JAVA机器人的主要代码公开(虽然不是什么好东西~~但偶们要坚持开源~~提供给其他刚接触JAVA MSN的人参考)~~虽然偶和WENSI写的比较初级而且方法很多都比较傻,想在完善下在发布,不过昨天我尝到了不开源的弊端~~~我的系统突然坏了,C盘数据都没保留下来,其中就包括了以前MSN机器人的代码备份,如果我要是开源了还能在网上找到~~-_-!!
说明:先将java msn里的lib导入的包里,然后使用下面的代码,这个代码完成MSN机器人的操作。 (可能有比较笨的方法,变量方法的命名也不规范,还请指正,如果哪位会设置头像或建立数据库连接池请说说怎么做,现在这个机器人不能支持很多人,谢谢) import java.sql.*;
import java.net.*; import rath.msnm.*; import rath.msnm.MSNMessenger; import rath.msnm.SwitchboardSession; import rath.msnm.UserStatus; import rath.msnm.entity.Group; import rath.msnm.entity.MsnFriend; import rath.msnm.event.MsnAdapter; import rath.msnm.msg.MimeMessage; import java.util.*; import com.google.soap.search.*; import com.google.soap.search.GoogleSearch; import com.google.soap.search.GoogleSearchResult; import java.io.*; /** * MSN消息事件处理类 * @author 瞄瞄,wensi */ public class MSNAdapter extends MsnAdapter { MsnIn msnin = new MsnIn(); static String searchcon; static String firstfriend; static String friendlist; String rewa = ""; String msg3; MSNMessenger messenger; String url = "jdbc:odbc:chat"; ////数据源 String login = ""; //用户名 String password = ""; //密码 Connection connection = null; // 声明Connection接口对象connection ResultSet rSet = null; // 定义数据库查询的结果集 ResultSet keySet = null; Statement statement = null; // 定义查询数据库的Statement对象 public MSNAdapter(MSNMessenger messenger) { this.messenger = messenger; } public void msnmsg(String msg) { msg3 = msg; msnin.textArea2.append(msg3 + " "); } /** * 某人正在输入信息 */ public void progressTyping( SwitchboardSession ss, MsnFriend friend, String typingUser) { System.out.println(friend.getLoginName() + "正在输入信息..."); } /** * 收到消息的时候执行该方法 */ public void instantMessageReceived( SwitchboardSession ss, MsnFriend friend, MimeMessage mime) { System.out.print("接收到消息:" + friend.getFriendlyName() + "->"); System.out.println(mime.getMessage()); msnmsg(friend.getFriendlyName() + "说:" + mime.getMessage()); int first = 0; if (firstfriend != null) { StringTokenizer stt = new StringTokenizer(firstfriend, "$"); String[] subStrt2 = new String[stt.countTokens()]; int a = 0; for (int i = 0; i < subStrt2.length; i++) { subStrt2[i] = stt.nextToken(); if (subStrt2[i].equals(friend.getLoginName())) { a = 1; break; } } if (a == 0) { firstfriend = firstfriend + "$" + friend.getLoginName(); first = 1; try { mime.setMessage("|0_0| 我是机器人瞄,如果想问我问题请尽管问 (co) 如果你想告诉我些知识请按照: study,问题内容,答案内容 的格式告诉我 (I) 如果想使用google搜索请输入: google,搜索内容 :-D 帮助请输入: help或? (M) 想和我的开发人员说话请加:icejmx@msn.com,wensi_feng@hotmail.com"); messenger.sendMessage(friend.getLoginName(), mime); msnmsg("#机器人回答:" + friend.getFriendlyName() + ",内容:帮助"); } catch (IOException ex1) {} } } else { firstfriend = firstfriend + "$" + friend.getLoginName(); first = 1; try { mime.setMessage("|0_0| 我是机器人瞄,如果想问我问题请尽管问 (co) 如果你想告诉我些知识请按照: study,问题内容,答案内容 的格式告诉我 (I) 如果想使用google搜索请输入: google,搜索内容 :-D 帮助请输入: help或? (M) 想和我的开发人员说话请加:icejmx@msn.com,wensi_feng@hotmail.com"); messenger.sendMessage(friend.getLoginName(), mime); msnmsg("#机器人回答:" + friend.getFriendlyName() + ",内容:帮助"); } catch (IOException ex1) {} } if (first == 0) { //对话开始 if (mime.getMessage().equals("help") || mime.getMessage().equals("帮助") || mime.getMessage().equals("?")) { //是否帮助 mime.setMessage("|0_0| 我是机器人瞄,如果想问我问题请尽管问 (co) 如果你想告诉我些知识请按照: study,问题内容,答案内容 的格式告诉我 (I) 如果想使用google搜索请输入: google,搜索内容 :-D 帮助请输入: help或? (M) 想和我的开发人员说话请加:icejmx@msn.com,wensi_feng@hotmail.com"); msnmsg("#机器人回答:" + friend.getFriendlyName() + ",内容:帮助"); } else { //是否帮助 if (mime.getMessage().indexOf(",") > 0) { //判断模式开始 StringTokenizer ms = new StringTokenizer(mime.getMessage(), ","); int mspart; mspart = ms.countTokens(); String[] message = new String[ms.countTokens()]; for (int i = 0; i < message.length; i++) { message[i] = ms.nextToken(); } if ( (mspart == 3) && (message[0].equals("学习")) || (message[0].equals("study")) || (message[0].equals("STUDY"))) { //学习模式 try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); connection = DriverManager.getConnection(url); statement = connection.createStatement(); String sql1 = "insert into holophrase (question,answer) values ('" + message[1] + "','" + message[2] + "')"; statement.executeUpdate(sql1); mime.setMessage("学习完毕,在问问我啊。帮助请输入:? 或 help"); msnmsg("#机器人回答:" + friend.getFriendlyName() + ",内容:学习完毕"); } catch (Exception ex) { ex.printStackTrace(); } } else if ( (mspart == 2) && (message[0].equals("google")) || (message[0].equals("GOOGLE"))) { //学习模式结束google搜索模式 String titleall = ""; if (searchcon != null) { String searchcon2 = searchcon; searchcon = ""; StringTokenizer stt = new StringTokenizer(searchcon2, "$"); String[] subStrt2 = new String[stt.countTokens()]; int a = 0; int b = 0; for (int i = 0; i < subStrt2.length; i++) { subStrt2[i] = stt.nextToken(); b++; if (subStrt2[i].equals(friend.getLoginName())) { a = 1; break; } } if (a == 0) { searchcon2 = searchcon2 + "$" + friend.getLoginName() + "$" + message[1]; searchcon = searchcon2; } else { subStrt2[b + 1] = message[1]; for (int i = 0; i < subStrt2.length; i++) { searchcon = searchcon + "$" + subStrt2[i]; } } } else { searchcon = searchcon + "$" + friend.getLoginName() + "$" + message[1]; } try { GoogleSearch search = new GoogleSearch(); search.setKey("AhGBLehQFHICcFbB5lYF9lDTZ4G71AzH"); search.setQueryString(message[1]); GoogleSearchResult result = search.doSearch(); int numResults = result.getEstimatedTotalResultsCount(); int numResults2 = numResults / 10; GoogleSearchResultElement[] resultElements = result. getResultElements(); int startIndex = result.getStartIndex() - 1; int endIndex = result.getEndIndex() - 1; for (int i = startIndex; i <= endIndex; i++) { GoogleSearchResultElement resultElement = resultElements[ (i)]; String title = resultElement.getTitle(); StringTokenizer st2 = new StringTokenizer(title, "<b>"); String[] subStr2 = new String[st2.countTokens()]; String title2 = ""; for (int i2 = 0; i2 < subStr2.length; i2++) { subStr2[i2] = st2.nextToken(); title2 = title2 + subStr2[i2]; } StringTokenizer st3 = new StringTokenizer(title2, "</b>"); String[] subStr3 = new String[st3.countTokens()]; String title3 = ""; for (int i3 = 0; i3 < subStr3.length; i3++) { subStr3[i3] = st3.nextToken(); title3 = title3 + subStr3[i3]; } String url = resultElement.getURL(); titleall = titleall + title3 + " " + url + " "; System.out.println(title); System.out.println(url); } if (startIndex == 0) { mime.setMessage(titleall + " 搜索结果共" + numResults2 + "页 当前页:0 看其他纪录输入:go->页数"); msnmsg("#机器人回答:" + friend.getFriendlyName() + ",内容:google搜索成功"); } else { mime.setMessage(titleall + " 搜索结果共" + numResults2 + "页 当前页:0 看其他页纪录输入:go->页数;看第一页纪录输入:go->0"); msnmsg("#机器人回答:" + friend.getFriendlyName() + ",内容:google搜索成功"); } } catch (Exception gsf) { mime.setMessage("Google Search Fault: " + gsf); //.getMessage()); System.out.println("Google Search Fault: " + gsf); //.getMessage()); msnmsg("#机器人回答:" + friend.getFriendlyName() + ",内容:google搜索失败"); } } |
|