一直都想实现个人智能微信,不需要自己操作就可以实现与好友的交流,实现微信的智能化。但是在实现过程中,发现已有大神封装了相应的API了,自己做简单调用就可实现了,组件的Git地址:https://github.com/yaphone/itchat4j 克隆下来后,导入到工程中,创建一个新的工程将之引入。这样基本环境就搭建好了:
public class WechatMsgHandlerFace implements IMsgHandlerFace {
//文本消息的处理,这里可以定义相关规则进行处理
@Override
public String textMsgHandle(BaseMsg msg) {
String text = msg.getText();
String result = "收到文本信息: " + text;
return result;
}
//图片消息
@Override
public String picMsgHandle(BaseMsg msg) {
String fileName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) + ".jpg"; // 这里使用收到图片的时间作为文件名
String picPath = GlobalData.picMsgPath + File.separator + fileName; // 保存图片的路径
DownloadTools.getDownloadFn(msg, MsgTypeEnum.PIC.getType(), picPath); // 调用此方法来保存图片
return "图片保存成功";
}
//语音消息
@Override
public String voiceMsgHandle(BaseMsg msg) {
String fileName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) + ".mp3"; // 这里使用收到语音的时间作为文件名
String voicePath = GlobalData.voiceMsgPath + File.separator + fileName; // 保存语音的路径
DownloadTools.getDownloadFn(msg, MsgTypeEnum.VOICE.getType(), voicePath); // 调用此方法来保存语音
return "声音保存成功";
}
//视频消息
@Override
public String viedoMsgHandle(BaseMsg msg) {
String fileName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) + ".mp4"; // 这里使用收到小视频的时间作为文件名
String viedoPath = GlobalData.videoMsgPath + File.separator + fileName;// 保存小视频的路径
DownloadTools.getDownloadFn(msg, MsgTypeEnum.VIEDO.getType(), viedoPath);// 调用此方法来保存小视频
return "视频保存成功";
}
@Override
public String nameCardMsgHandle(BaseMsg arg0) {
return "收到名片消息";
}
@Override
public void sysMsgHandle(BaseMsg msg) {
// TODO Auto-generated method stub
}
@Override
public String verifyAddFriendMsgHandle(BaseMsg msg) {
// TODO Auto-generated method stub
return null;
}
@Override
public String mediaMsgHandle(BaseMsg msg) {
// TODO Auto-generated method stub
return null;
}
}
public class MainFrame {
public static void main(String[] args) {
IMsgHandlerFace msgHandler=new WechatMsgHandlerFace();
Wechat wechat = new Wechat(msgHandler, GlobalData.loginImgPath);
wechat.start();
}
}
这个服务的本质是微信网页版,模拟网页爬虫实现的,运行后弹出登录二维码,登录成功后记录好友信息,进行下步逻辑处理。大致提供了以下Api功能:
public static List<String> getContactNickNameList()
public static List<JSONObject> getContactList()
public static List<String> getGroupIdList()
public static JSONArray getMemberListByGroupId(String groupId)
public static void logout()
public static boolean getWechatStatus()
public static List<String> getGroupNickNameList()
public static void remarkNameByNickName(String nickName, String remName)
public static boolean sendMsgByNickName(String text, String nickName)
public static void sendMsgById(String text, String id)
public static boolean sendPicMsgByNickName(String nickName, String filePath)
public static boolean sendPicMsgByUserId(String userId, String filePath)
public static boolean sendPicFileByNickName(String nickName, String filePath)
public static boolean sendFileMsgByUserId(String userId, String filePath)
public static void addFriend(BaseMsg msg, boolean accept)
现在微信官方应该全面禁止网页登录了,已被废弃