分享

JAVA MSN机器人主要代码开发

 KILLKISS 2010-01-28
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搜索失败");
         }
      }
         

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多