之前已经发布过一次,这次重新发布是因为增加了多个接口,项目结构也做了较大调整,
项目地址:itchat4j,该项目长期维护更新,欢迎 star、fork、pull requests、issue。
来源
itchat 是一个非常优秀的开源微信个人号接口,使用 Python 语言开发,提供了简单易用的 API,可以很方便地对个人微信号进行扩展,实现自动回复,微信挂机机器人等,一直在关注这个项目,基于 itchat 开发过一个小项目,用来控制我的树莓派来播放音乐,效果还不错。
一直想实现一个 java 版本的 itchat,由于工作太忙导致一拖再拖,这段时间稍微空闲了一些,仔细阅读了 itchat 的源码,终于完成了一个基础版本,由于主要灵感来源于 itchat 项目,所以这个项目的就暂时定名为itchat4j吧。
项目介绍
itchat 是一个开源的微信个人号接口,使用 Python 调用微信从未如此简单。使用短短的几十行代码,你就可以完成一个能够处理所有信息的微信机器人。当然,itchat 的使用远不止一个机器人,更多的功能等着你来发现,如今微信已经成为了个人社交的很大一部分,希望这个项目能够帮助你扩展你的个人的微信号、方便自己的生活。(引自 itchat 项目)
你可以轻松将itchat4j其集成在你个人的 Java 应用中,无论是 SpringMVC、桌面程序还是嵌入式程序,只要使用的 JDK 是 1.6 以上的版本,都可以轻松接入。玩法很多,请打开你的脑洞,比如这些:
Just for fun,把个人微信号扩展为"公众号",在朋友面前装个 X 吧。
集成在你的个人应用( SpringMVC、Serverlet、GUI )中,为应用提供更强的服务能力。
部署在你的服务器上,将监控信息、日志发送到你的微信号。
微信机器人,专业陪聊工具
控制树莓派、智能家居、智能硬件等具有开放接口的设备
Anything you want ...
API 说明
项目在不断更新中,API 会有变动,请以具体代码为准
目前在package cn.zhouyafeng.itchat4j.api包中有两个静态类,即MessageTools和WechatTools,目前对外暴露的方法有:
1.获取好友列表 WechatTools.getContactList()
此方法会返回好友昵称列表,其函数声明为:
public static List getContactList()
2.获取群列表 WechatTools.getGroupIdList()
群列表与好友列表不同,在登陆后群列表其实是空的,只有主动发送消息或者收到一条群消息时,才能获取到这个群的信息,群列表会记录这个群的 id,其格式为@@d052d34b9c9228830363013ee53deb461404f80ea353dbdd8fc9391cbf5f1c46。调用此方法会返回已知的群列表。其声明函数为:
public static List getGroupIdList()
3. 根据好友昵称发送文本消息,MessageTools.sendMsgByNickName(String text, String nickName)
此方法根据用户昵称发送文本消息,注意,用户需在你的好友列表里,否则发送失败,如果你的好友列表里有存在昵称一样的多个用户,则只会给第一个匹配的好友发送消息。方法接受两个参数,text为要发送的文本消息,nickName为要发送消息的好友昵称,成功发送时返回 true,失败返回 false。其函数声明为:
public static boolean sendMsgByNickName(String text, String nickName)
4.根据 ID 发送文本消息,MessageTools.sendMsgById(String text, String id)
根据 ID 发送文本消息,发送者 ID 可以从msg里通过msg.getString("FromUserName")获取,格式为@@d052d34b9c9228830363013ee53deb461404f80ea353dbdd8fc9391cbf5f1c46(群消息)或@a257b99314d8313862cd44ab02fe0f81(非群消息),调用此方法可向指定 id 发送消息。其函数声明为:
public static void sendMsgById(String text, String id)
5.根据好友昵称发送图片消息,MessageTools.sendPicMsgByNickName(String nickName, String filePath)
此方法根据好友昵称发送图片消息,filePath为图片文件路径,如D:/itchat4j/pic/test.jpg,成功返回 true,失败返回 false。其函数声明为:
public static boolean sendPicMsgByNickName(String nickName, String filePath)
6.根据 ID 发送图片消息,MessageTools.sendPicMsgByUserId(String userId, String filePath)
此方法根据好友 ID 发送图片消息,filePath为图片文件路径,如D:/itchat4j/pic/test.jpg`,成功返回 true,失败返回 false。其函数声明为:
public static boolean sendPicMsgByUserId(String userId, String filePath)
7.根据好友昵称发送文件消息,MessageTools.sendFileMsgByNickName(String nickName, String filePath)
此方法根据好友昵称发送文件消息,文件可以为多种类型,如 txt、PDF、小视频、语音、excel、docx 等,发送时请保证文件后缀名正确。成功返回 true,失败返回 false。其函数声明为:
public static boolean sendPicFileByNickName(String nickName, String filePath)
8.根据 ID 发送文件消息,MessageTools.sendFileMsgByNickName(String nickName, String filePath)
此方法根据好友昵称发送文件消息,成功返回 true,失败返回 false。其函数声明为:
public static boolean sendFileMsgByUserId(String userId, String filePath)
TODO List 即将支持 /正在开发
根据 userId 获取用户的详细信息
获取群成员列表
拉人进群功能
如何使用
项目在不断更新中,导入后的项目结构会有变动
itchat4j 是一个 Maven 项目,下载源码后,可以以 Maven 项目的形式导入,导入后的项目结构如下图:
src/main/java 是 itchat4j 的项目源码,在 src/test/java 目录下有两个小 Demo:一个是基本功能的小示例,当前,itchat4j 可以处理四类基本信息,文本、语音、图片和小视频,该示例在收到文本信息后自动回复,回复内容为收到的文本,当收到图片、语音、小视频时可以保存到指定的目录;一个是微信接入图灵机器人的小例子,如下图。
微信机器人使用截图
问题和建议
本项目长期更新、维护,功能不断扩展与完善中,欢迎 star。
项目使用过程中遇到问题,欢迎随时反馈。
任何问题或者建议都可以在 Issue 中提出来,也可以加入 QQ 群讨论:636365179