使用Java開發QQ機器人- CQ & HTTP TO CQ
使用酷Q平臺下的HTTP TO CQ插件以及simple-robot核心標準庫作爲依賴。
此插件與框架的 簡陋 簡單介紹:文檔處簡介
使用Java開發QQ機器人框架的方法一(也是更加推薦的方法):方法一: 使用CQ HTTP插件
前往項目Github地址點擊star
以收穫作者的感謝:GayHub
快速開始
一、安裝
1. 下載並安裝 酷Q
前往酷Q官方下載地址下載酷Q應用,並安裝(啓動一次),然後關閉。
2. 下載並安裝 HTTP TO CQ插件
①. 前往HTTP TO CQ
的 releases 下載最新版本。
②. 將下載好的.cpk
格式文件移動至酷Q
根目錄下的/app
文件夾下。
③. 啓動一次酷Q程序,右鍵酷Q標誌,選擇:應用 > 應用管理
,如圖所示:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gcC80kIu-1582724960083)(https://i.vgy.me/QpgBpK.png)]
然後將會出現應用管理界面,選擇HTTP API插件並選擇啓用,如圖所示:
HTTP TO CQ插件自帶UI,對於新手來說還是比較友好的。其配置UI圖例如圖:
3. 創建Java項目
你可以使用一切支持的方式來自動構建項目,以下將會舉幾個例子:
[info] 版本號請自行替換爲 Maven倉庫中的最新版本:https://img.shields.io/maven-central/v/io.github.ForteScarlet.simple-robot-core/component-forhttpapi
①. Maven
<dependency>
<groupId>io.github.ForteScarlet.simple-robot-core</groupId>
<artifactId>component-forhttpapi</artifactId>
<version>${version}</version>
</dependency>
②. Gradle
implementation 'io.github.ForteScarlet.simple-robot-core:component-forhttpapi:${version}'
③. Grape
@Grapes(
@Grab(group='io.github.ForteScarlet.simple-robot-core', module='component-forhttpapi', version='${version}')
)
)
二. 使用
4. 配置
有兩個地方需要你進行配置:
- 酷Q的
HTTP TO CQ
- 你需要啓動的Java程序
從Java的配置開始吧。
由於目前文件配置尚比較繁瑣,便暫時先只介紹代碼配置的方式。如果對目前的較爲繁瑣的文件配置有興趣,請在瞭解代碼配置的情況下查看 文件配置方式
首先,創建一個類,實現com.forte.qqrobot.component.forhttpapi.HttpApp
接口,並實現接口中的before
與after
方法。
現在假定你這個類叫做
RunApp
, 方便後續的代稱。當然,它實際上叫做什麼都無所謂。
可以發現,before
方法中存在一個叫做HttpConfiguration
的參數,我們就要通過這個參數對象進行配置。
以下我將會列舉最常見的幾項配置信息,而全面的配置可選項請查看核心通用配置 與 組件額外配置
關於HTTP TO CQ的配置與Java程序的配置信息,我簡單畫了這麼一個對應關係圖:
!!! 千萬別忘了寫端口號! 插件的提交地址的默認值並沒有寫端口號,這是個坑 !!!
5. 運行
歷盡千辛萬苦,終於到了這一步。
首先,新建一個main
方法在任意地方。
寫下以下代碼,並且別忘了那個RunApp
實際上代表了什麼:
HttpApplication application = new HttpApplication();
// 啓動
application.run(new RunApp());
[success] 如果這時候一看到控制檯所輸出的日誌中最終出現了你的機器人的一些信息,那麼恭喜,這說明你已經發送、獲取、設置消息了。
那麼能不能監聽到消息呢?寫一些代碼來測試一下吧。
6. 第一個監聽器
①. 新建一個類
[info] 儘量在
RunApp
的同級目錄或者子級目錄下創建。
創建好之後,在這個類上標註一個註解:@com.forte.qqrobot.anno.depend.Beans
, 即@Beans
②. 寫一個監聽私信的方法
我們寫一個監聽私信消息滿足正則:hello.*
的私信消息監聽函數,且當我們收到消息後,復讀。
完整代碼如下:
@Beans
public class TestListener {
@Listen(MsgGetTypes.privateMsg)
@Filter("hello.*")
public void testListen1(PrivateMsg msg, MsgSender sender) {
System.out.println(msg);
// 以下三種方法均可,效果相同
sender.SENDER.sendPrivateMsg(msg, msg.getMsg());
// sender.SENDER.sendPrivateMsg(msg.getQQ(), msg.getMsg());
// sender.SENDER.sendPrivateMsg(msg.getQQCode(), msg.getMsg());
}
}
注:如果在默認配置的情況下,監聽器的被掃描包範圍在
RunApp
啓動器的同級包目錄與其子目錄。
③. 在來一次
這次我們再啓動一次,如果發現啓動日誌中成功加載了這個監聽函數,那就試着給你的機器人發送一句hello world
吧。
如果它也回覆了你一句hello world
,那麼說明至此你已經成功了,可以繼續深入的探索 文檔 中所提供的豐富功能並實現你想要的機器人吧~
當然也可以考慮直接進入QQ羣782930037
進行詢問哦~
7. 失敗了?
如果跟着上述流程完整無誤的操作卻無法成功,也不要氣餒,嘗試根據常見問題彙總進行排查或者加入QQ羣782930037
進行諮詢。