Smart QQ Java

源碼:https://github.com/ScienJus/smartqqgit

基於 Smart QQ(Web QQ) 的 Api 封裝,你能夠用這個 Api 製做屬於本身的 QQ 機器人!github

該項目目前(2016年2月)爲止還能夠正常使用,我也會盡可能一直維護這個項目,Ruby版也是如此。web

該項目僅提供了最基本的通訊協議,你能夠在此基礎上實現本身的業務邏輯,包括且不限於:後端

  • 擁有 GUI 的 QQ 客戶端(Android 或桌面版)
  • 自動聊天回覆的 QQ 機器人
  • 彙總聊天記錄並同步在雲上
  • 經過 QQ 寫郵件、發短信、執行遠程服務器的命令
  • 等等……

注:因爲 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();
        }
    }
}

Api 列表

若是你想要了解 Web QQ 的通信協議,並本身實現一個通信接口。我在博客中詳細的記錄了抓包獲取的請求和對應參數信息。你能夠直接點擊下面的目錄:spa

Web QQ協議分析(一):前言

Web QQ協議分析(二):登陸

Web QQ協議分析(三):收發消息

Web QQ協議分析(四):好友相關

Web QQ協議分析(五):羣和討論組相關

Web QQ協議分析(六):其餘

常見錯誤

編譯錯誤

因爲本項目使用了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,意見和建議也歡迎。

相關文章
相關標籤/搜索