源码:https://github.com/ScienJus/smartqqgit
基于 Smart QQ(Web QQ) 的 Api 封装,你能够用这个 Api 制做属于本身的 QQ 机器人!github
该项目目前(2016年2月)为止还能够正常使用,我也会尽可能一直维护这个项目,Ruby版也是如此。web
该项目仅提供了最基本的通讯协议,你能够在此基础上实现本身的业务逻辑,包括且不限于:后端
注:因为 Smart QQ 不支持收发图片等功能,因此此 Api 也只能够发送文字消息(不包含 @ 命令)。服务器
若是你须要将此Api嵌入到别的项目,可使用Maven依赖:maven
仓库:ide
<repository> <id>scienjus-mvn-repo</id> <url>https://raw.github.com/ScienJus/maven/snapshot/</url> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository>
依赖:测试
<dependency> <groupId>com.scienjus</groupId> <artifactId>smartqq</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
若是你只是想要尝试一下,能够直接Clone本项目并随便写个Main方法运行。url
public class Application { public static void main(String[] args) { //建立一个新对象时须要扫描二维码登陆,而且传一个处理接收到消息的回调,若是你不须要接收消息,能够传null SmartQQClient client = new SmartQQClient(new MessageCallback() { @Override public void onMessage(Message message) { System.out.println(message.getContent()); } @Override public void onGroupMessage(GroupMessage message) { System.out.println(message.getContent()); } @Override public void onDiscussMessage(DiscussMessage message) { System.out.println(message.getContent()); } }); //登陆成功后即可以编写你本身的业务逻辑了 List<Category> categories = client.getFriendListWithCategory(); for (Category category : categories) { System.out.println(category.getName()); for (Friend friend : category.getFriends()) { System.out.println("————" + friend.getNickname()); } } //使用后调用close方法关闭,你也可使用try-with-resource建立该对象并自动关闭 try { client.close(); } catch (IOException e) { e.printStackTrace(); } } }
若是你想要了解 Web QQ 的通信协议,并本身实现一个通信接口。我在博客中详细的记录了抓包获取的请求和对应参数信息。你能够直接点击下面的目录:spa
编译错误
因为本项目使用了Lombok,一个在编译器自动添加Get/Set/toString等方法的第三方类库,因此若是Clone的项目由于缺乏Get/Set方法而编译报错,则须要下载对应的IDE插件。
程序没法控制的错误
错误码103:这个是因为Smart QQ多点登陆,后端校验失败。须要手动进入官网,检查是否能正常接收消息。若是能够的话点击[设置]->[退出登陆]后查看是否恢复正常
正常流程不该该发生的错误
错误码10000一、1000000:基本是因为参数错误或者Cookie错误所引发的,若是遇到这种状况,请提交Issue反馈
错误码6:若是是在getGroupInfo
方法中出现,多是误把group.id
当成group.code
做为参数了,这里的参数应该是code
。
2016-2-2:修改了Jar运行时保存二维码失败的Bug,感谢@oldjunyi的反馈!
2016-2-1:程序没法接收消息,同时登陆官网后也没法接收消息。大约 15:44 左右恢复正常,程序不须要更新。感谢@WiseClock提供信息!
如今使用requests进行 Http 请求
因为 Web QQ 协议变动比较频繁,而我也不可能时时都去测试 Api 的可用性,因此若是您在使用途中发现了问题,欢迎给我提 Issue ,或是经过邮件联系我:i@scienjus.com
,意见和建议也欢迎。