itchat4j--用 Java 扩展个人微信号的能力!

2017-05-14 18:33:34 +08:00
 yaphone

之前已经发布过一次,这次重新发布是因为增加了多个接口,项目结构也做了较大调整,

项目地址: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 以上的版本,都可以轻松接入。玩法很多,请打开你的脑洞,比如这些:

API 说明

项目在不断更新中,API 会有变动,请以具体代码为准

目前在package cn.zhouyafeng.itchat4j.api包中有两个静态类,即MessageToolsWechatTools,目前对外暴露的方法有:

1.获取好友列表 WechatTools.getContactList()

此方法会返回好友昵称列表,其函数声明为:

public static List<String> getContactList()

2.获取群列表 WechatTools.getGroupIdList()

群列表与好友列表不同,在登陆后群列表其实是空的,只有主动发送消息或者收到一条群消息时,才能获取到这个群的信息,群列表会记录这个群的 id,其格式为@@d052d34b9c9228830363013ee53deb461404f80ea353dbdd8fc9391cbf5f1c46。调用此方法会返回已知的群列表。其声明函数为:

public static List<String> 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 即将支持 /正在开发

如何使用

项目在不断更新中,导入后的项目结构会有变动

itchat4j 是一个 Maven 项目,下载源码后,可以以 Maven 项目的形式导入,导入后的项目结构如下图:

src/main/java 是 itchat4j 的项目源码,在 src/test/java 目录下有两个小 Demo:一个是基本功能的小示例,当前,itchat4j 可以处理四类基本信息,文本、语音、图片和小视频,该示例在收到文本信息后自动回复,回复内容为收到的文本,当收到图片、语音、小视频时可以保存到指定的目录;一个是微信接入图灵机器人的小例子,如下图。

微信机器人使用截图

问题和建议

本项目长期更新、维护,功能不断扩展与完善中,欢迎 star。

项目使用过程中遇到问题,欢迎随时反馈。

任何问题或者建议都可以在 Issue 中提出来,也可以加入 QQ 群讨论:636365179

4098 次点击
所在节点    程序员
10 条回复
YzSama
2017-05-14 19:43:29 +08:00
赞。不过我已经用上 weixin-tools。😂
yaphone
2017-05-14 22:11:21 +08:00
@YzSama weixin-tools 也是个人微信号工具吗?
mingyun
2017-05-14 23:11:24 +08:00
不会 java 感觉还是 Python 版的方便
@YzSama weixin-tools 是?
YzSama
2017-05-15 08:31:04 +08:00
@yaphone
@mingyun
github 上面 weixin-java-tools。
PythoneerDev6
2017-05-15 10:30:42 +08:00
实用性没有 Python 好。
fisher335
2017-05-15 10:48:28 +08:00
这段时间 web 微信的接口不太稳定,应该是企鹅注意到这种情况了,估计要下手了。
zacard
2017-05-15 13:54:50 +08:00
不错
yaphone
2017-05-15 14:17:32 +08:00
@PythoneerDev6 嗯,确实没有 Python 版的 itchat 方便,但是适用场景不一样嘛😊
yaphone
2017-05-15 14:18:17 +08:00
@fisher335 最近确实不太稳定,不知道什么原因
yaphone
2017-05-15 14:18:29 +08:00
@zacard 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/361274

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX