
10分鐘跑通OpenShamrock如何在安卓手機上搭一個OneBot 11的QQ機器人【免費下載鏈接】OpenShamrockA Bot Framework based on Xposed with OneBot11項目地址: https://gitcode.com/gh_mirrors/op/OpenShamrock想要一個 QQ 機器人卻發(fā)現(xiàn) go-cqhttp 早已停止維護純協(xié)議實現(xiàn)又時刻擔(dān)心賬號安全。OpenShamrock 是一個基于 XposedLSPosed實現(xiàn)的 QQ 機器人框架它直接運行在你手機上的 QQ 進程里并對外提供 OneBot 11/12 標(biāo)準(zhǔn)的 WebSocket 接口——你現(xiàn)有的 OneBot 代碼通常不用改動把連接地址換成手機上的地址就能接上。它不是一臺獨立的協(xié)議服務(wù)器而是一個 Xposed 模塊QQ 正常登錄、正常聊天Shamrock 在進程內(nèi)部監(jiān)聽消息、執(zhí)行 API 調(diào)用再把事件推送給你的機器人程序。本文按拿到→跑起來→看懂→排坑的順序講解照著做即可。 OpenShamrock 項目快照10 秒看清它是什么一句話定位OpenShamrock 是基于 LSPosedNon-Riru實現(xiàn) Kritor 標(biāo)準(zhǔn)的 OneBot 11/12 QQ 機器人框架。項目說明它是什么Xposed 模塊形式的 QQ 機器人框架實現(xiàn) OneBot 11/12 標(biāo)準(zhǔn)技術(shù)棧Kotlin Xposed內(nèi)置 KSP 代碼生成與 Silk 語音解碼 C 源碼運行環(huán)境已 root 的安卓設(shè)備 LSPosedQQ 9.0.70 及以上TIM 也可掛載對外接口正向 WebSocket默認 5700 端口、反向 WebSocket均支持鑒權(quán) token模塊劃分app配置應(yīng)用、xposed核心、qqinterface 與 protobuf接口/協(xié)議定義、processor代碼生成許可證GPL-3.0拿到 OpenShamrock 后如何最快跑起來裝好模塊優(yōu)先從官方 Release 下載 APK想自己編譯的話先克隆倉庫git clone https://gitcode.com/gh_mirrors/op/OpenShamrock再用 Android Studio 構(gòu)建。配置 LSPosed設(shè)備已 root 并裝好 LSPosed 后在 LSPosed 管理器中啟用 Shamrock 模塊作用域同時勾選QQ和系統(tǒng)。效果QQ 啟動時模塊完成掛載系統(tǒng)是保活機制需要的不能漏。啟動并掛載把 QQ 升到 9.0.70 以上重新登錄。效果模塊在 QQ 主進程內(nèi)啟動服務(wù)日志里能看到初始化記錄。配置連接方式打開 Shamrock 應(yīng)用或默認配置文件二選一打開正向active_rpctrue端口 5700或反向passive_rpc連接并填上鑒權(quán) tokenactive_ticket。效果手機側(cè)開始按你指定的方式暴露 OneBot 接口。接入機器人把你現(xiàn)有的 OneBot 客戶端如 NoneBot的 ws 地址指向手機IP:5700。效果發(fā)一條測試消息事件推送和發(fā) API 都通了即算跑通。它是怎么工作的一個寄生在 QQ 進程里的前臺接線員把它理解成坐在 QQ 前臺的接線員。QQ 收到一條新消息相當(dāng)于電話鈴響了入口類 XposedEntry 在 QQ 啟動流程上掛了分機鈴響時先讓接線員聽一遍把內(nèi)容整理成標(biāo)準(zhǔn)事件轉(zhuǎn)給你的機器人機器人要回話時接線員再替你把電話撥回去。具體分工分三層。第一層是 xposed 核心模塊xposed/actions 目錄里是一批啟動動作比如 Hook 系統(tǒng)框架防止息屏殺進程KeepAlive、拉取遠端配置、平板模式等負責(zé)活著這件事。第二層是接口與協(xié)議qqinterface 里是 QQ 內(nèi)部類的接口定義protobuf 是與 QQ 服務(wù)器通信的數(shù)據(jù)結(jié)構(gòu)定義processor 模塊在編譯期用 KSP 從這些定義批量生成代碼避免手寫樣板。第三層是 API 服務(wù)kritor/service 下的 MessageService、GroupService、FriendService 等就是你調(diào)用的接口消息的格式轉(zhuǎn)換管道在 qq/service/msg負責(zé)把 QQ 內(nèi)部的消息對象轉(zhuǎn)成 OneBot 標(biāo)準(zhǔn)格式。三個真實用例遷移舊機器人、自動管群、收語音消息用例一遷移 go-cqhttp 舊機器人兼容性場景手上已有一套按 go-cqhttp 寫的 OneBot 11 機器人舊實現(xiàn)沒人維護了。能做什么項目本身就是按 go-cqhttp 的文檔開發(fā)的README 明確寫了一鍵移植把舊機器人的 ws 地址指到手機上即可也支持與別的協(xié)議實現(xiàn)平行部署。注意什么手機要長期在線且網(wǎng)絡(luò)可達息屏不能斷服務(wù)這正是模塊要 Hook 系統(tǒng)框架的原因鑒權(quán) token 兩側(cè)必須一致。用例二群管理自動化API 能力場景幾百人的群人工審入群申請、發(fā)公告、處理禁言太累。能做什么通過 GroupService 等接口自動審核入群申請、發(fā)群公告、管理群成員權(quán)限服務(wù)層按消息、好友、群、文件劃分寫業(yè)務(wù)時找接口很直接。注意什么機器人賬號自身要有對應(yīng)權(quán)限比如群管理員權(quán)限不足的 API 調(diào)用會直接失敗。用例三接收并解碼語音消息媒體處理場景希望機器人能處理用戶發(fā)的語音而不是只回一句我不聽語音。能做什么倉庫內(nèi)置了完整的 Silk 編解碼 C 源碼app/src/main/cpp/src/語音解碼是它的原生能力配合文檔的語音支持部分配置后機器人可以解碼并轉(zhuǎn)寫處理語音。注意什么語音支持有額外的配置步驟不是裝完即生效倉庫里的 AudioLibrary 壓縮包對應(yīng)不同 CPU 架構(gòu)別用錯。 OpenShamrock 常見坑與排查現(xiàn)象→原因→怎么辦現(xiàn)象QQ 能正常用但模塊完全不生效。原因QQ 低于 9.0.70官方明確低版本不再修復(fù)。怎么辦升級到 9.0.70 以上別在低版本上反復(fù)試。現(xiàn)象連接正常息屏或放后臺一陣子后機器人掉線。原因作用域只勾了 QQ保活依賴的系統(tǒng)范圍沒加進程被系統(tǒng)回收。怎么辦在 LSPosed 中把模塊作用域補上系統(tǒng)并授予對應(yīng)權(quán)限?,F(xiàn)象機器人程序一連就被斷開或拒絕。原因鑒權(quán) token 為空或客戶端 token 與手機側(cè)active_ticket不一致。怎么辦兩側(cè)配置同一個 token保存后重啟 QQ 讓配置生效?,F(xiàn)象5700 端口沒有監(jiān)聽。原因正向 RPC 默認是關(guān)閉的active_rpc默認為 false或者端口被占用。怎么辦打開active_rpc或把rpc_port改成空閑端口客戶端同步改。現(xiàn)象擔(dān)心對賬號有風(fēng)險。原因歷史上基于 Riru 的方案出過封號問題。怎么辦按項目說明選用 LSPosedNon-Rilu路線并用專門的副號跑機器人別用主號。該不該選 OpenShamrock一句話選型建議它適合手里有已 root 安卓設(shè)備、想拿真實 QQ 跑 OneBot 11 機器人、又不想維護協(xié)議服務(wù)器的人不適合不想碰 root、需要部署在 PC/服務(wù)器或追求高并發(fā)穩(wěn)定運行的場景那些情況純協(xié)議方案更合適。另外 README 聲明本項目以學(xué)習(xí)交流與研究 Xposed 為主商業(yè)或大規(guī)模部署前請自行評估合規(guī)與賬號風(fēng)險。官方倉庫入口https://gitcode.com/gh_mirrors/op/OpenShamrock【免費下載鏈接】OpenShamrockA Bot Framework based on Xposed with OneBot11項目地址: https://gitcode.com/gh_mirrors/op/OpenShamrock創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考