源碼: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
,意見和建議也歡迎。