如何用Java写QQ机器人 v2.0
如何用Java寫QQ機器人 v2.0
- 前提
- simple-robot框架
- 官方文檔
- simple-robot mirai組件
- 構建項目
- 配置文件
- 寫一個監聽器類
- 編寫啟動類
- 成功了
- 失敗了
- 支持與贊助
這次我想不到什么開場白了,直接開始吧。
前提
IDE : IntelliJ IDEA
JDK : JDK8+
Maven: 3.6.0+
simple-robot框架
此框架的github地址:https://github.com/ForteScarlet/simpler-robot
simple-robot是一個目標為兼容多平臺機器人應用的框架。
此框架中已經集成了針對于QQ機器人的開發組件,因此我們可以使用此框架來開發一個QQ機器人。
官方文檔
在介紹之前,先貼出此框架的官方文檔,如果有能力有興趣的小伙伴可以直接去看看文檔,或者加入他們的交流群。
文檔:https://www.yuque.com/simpler-robot/simpler-robot-doc
simple-robot mirai組件
simple-robot對接QQ的一個組件是對接使用mirai框架進行的,并且基于chusimple-robot框架下,除了日志和配置文件以外你應當感知不到mirai的存在。
simple-robot mirai組件文檔
構建項目
我們使用maven構建項目,首先導入所需依賴:
版本請參考simple-robot 的 github中的最新版本。
<properties><simbot.version>2.0.1</simbot.version></properties><dependencies><!-- mirai組件依賴。如果使用版本控制,則不需要填寫version。 --><dependency><groupId>love.forte.simple-robot</groupId><artifactId>component-mirai</artifactId><version>${simbot.version}</version></dependency></dependencies><build><plugins><!-- compiler plugin. --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target><compilerArgs><arg>-parameters</arg></compilerArgs></configuration></plugin><!-- 打包插件, 用于打包為jar --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.4.RELEASE</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>配置文件
先準備好配置文件吧,在 resources 目錄下創建一個配置文件:simbot.yml,不知道什么是 resources 目錄的同學可以去百度一下補補功課哦~
這里就展示一個最簡單的配置:
注意!我建議你關閉這個測試用的賬號的 設置 - 賬號安全 中所有能關閉的選項,例如 登錄設備管理 - 登錄保護等。
上述這些可以通過手機端進行設置,并自行評估這樣做的風險。
寫一個監聽器類
新建一個包路徑:example.bot.listener,當然,這個路徑你可以自己隨便改,然后在這個 listener 包下新建一個類:MyListener,當然,類名也可隨便:
@Beans public class MyListener {// ...}可以看到,需要在類上標注一個 @Beans 注解,這是simple-robot 中的依賴注入模塊所提供的注解,可以認為它是一個在Springboot中類似@Component的注解。
接下來,下一個監聽私聊消息的"監聽函數",這里我直接copy simple-robot的官方demo項目中的代碼了:
/*** 私聊消息監聽的示例類。* 所有需要被管理的類都需要標注 {@link Beans} 注解。* @author ForteScarlet*/ @Beans public class MyListener {/*** 通過依賴注入獲取一個 "消息正文構建器工廠"。**/@Dependprivate MessageContentBuilderFactory messageContentBuilderFactory;/*** 此監聽函數監聽一個私聊消息,并會復讀這個消息,然后再發送一個表情。* 此方法上使用的是一個模板注解{@link OnPrivate},* 其代表監聽私聊。* 由于你監聽的是私聊消息,因此參數中要有個 {@link PrivateMsg} 來接收這個消息實體。** 其次,由于你要“復讀”這句話,因此你需要發送消息,* 因此參數中你需要一個 "消息發送器" {@link Sender}。** 當然,你也可以使用 {@link love.forte.simbot.api.sender.MsgSender},* 然后 {@code msgSender.SENDER}.*/@OnPrivatepublic void replyPrivateMsg1(PrivateMsg privateMsg, Sender sender){// 獲取消息正文。MessageContent msgContent = privateMsg.getMsgContent();// 向 privateMsg 的賬號發送消息,消息為當前接收到的消息。sender.sendPrivateMsg(privateMsg, msgContent);// 再發送一個表情ID為'9'的表情。// 方法1:使用消息構建器構建消息并發送// 在絕大多數情況下,使用消息構建器所構建的消息正文 'MessageContent'// 是用來發送消息最高效的選擇。// 相對的,MessageContentBuilder所提供的構建方法是十分有限的。// 獲取消息構建器MessageContentBuilder msgBuilder = messageContentBuilderFactory.getMessageContentBuilder();// 通過.text(...) 向builder中追加一句話。// 通過.face(ID) 向builder中追加一個表情。// 通過.build() 構建出最終消息。MessageContent msg = msgBuilder.text("表情:").face(9).build();// 直接通過這個msg發送。sender.sendPrivateMsg(privateMsg, msg);// 方法2:使用CAT碼發送消息。// 使用CAT碼構建一個需要解析的消息是最靈活的,// 但是相對的,它的效率并不是十分的可觀,畢竟在這其中可能會涉及到很多的'解析'操作。// 獲取CAT碼工具類實例CatCodeUtil catCodeUtil = CatCodeUtil.getInstance();// 構建一個類型為 'face', 參數為 'id=9' 的CAT碼。// 有很多方法。// 1. 通過 codeBuilder 構建CAT碼// String cat1 = catCodeUtil.getStringCodeBuilder("face", false).key("id").value(9).build();// 2. 通過CatCodeUtil.toCat 構建CAT碼// String cat2 = catCodeUtil.toCat("face", "id=9");// 3. 通過模板構建CAT碼String cat3 = catCodeUtil.getStringTemplate().face(9);// 在cat碼前增加一句 '表情' 并發送sender.sendPrivateMsg(privateMsg, "表情:" + cat3);} }編寫啟動類
在上述監聽函數的上一層包路徑中,創建一個啟動類:MyBotApplication:
@SimbotApplication public class MyBotApplication {public static void main(String[] args) {SimbotApp.run(MyBotApplication.class, args);} }然后執行main方法,觀察控制臺信息,因為在前幾次登錄的時候有可能會出現一些類似于需要輸入驗證碼啊之類的信息。
如果出現了類似這樣的日志:
[2021-02-23T17:10:57.189]-[INFO ] | love.f.s.c.c.CoreListenerRegistrar : Start the registration Bot: code=111111111, name=這是bot的名字, level=9999那么這就說明你配置文件中填寫的賬號登錄成功了。
接下來,用另外的賬號私聊這個賬號,比如說一句:你好
如果它也回復了你,那么恭喜你,第一步已經成功了。
成功了
當你成功后,你就可以:
- 深入閱讀 simple-robot文檔 來繼續編寫你的bot。
- 參考 simple-robot-mirai 官方Demo項目來得到一些啟發。
- 在遇到不理解的問題時,可以通過 github討論區 與 simple-robot開發團隊交流。
- 遇到bug的時候通過 github issue 進行反饋。
失敗了
不要氣餒,你可以通過 github討論區 或 github issue 進行提問或反饋。
支持與贊助
不要忘記,一份贊助是鼓勵作者的最好方式,你可以通過贊助simple-robot 來表示你的支持。
總結
以上是生活随笔為你收集整理的如何用Java写QQ机器人 v2.0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Echarts】地图 中国城市经纬度J
- 下一篇: Java实现简单的QQ登录界面