lapis

lapis

理解以真实为本,但真实本身不会自动呈现

二號機-KiviBot:輕量高效,跨平台的QQbot

二號機 - KiviBot:輕量高效,跨平台的 QQbot#

date: January 27, 2023
slug: 18
status: Published
tags: 技術
type: Post

Bot 介紹#

KiviBot 是使用TypeScript語言編寫的輕量優雅跨平台開發者友好能跑就行的 QQ 機器人框架。

框架提供了完備的狀態監控、插件管理(支持熱更新)、主副管理員機制、消息通知、請求處理功能以及友好的腳手架,開箱即用。框架完全開源,可擴展性強,插件開發簡單,核心底層協議使用 oicq v2, API 較多,功能強大。另外,框架使用 node 驅動,得益於 node 及其高效的 v8 引擎,KiviBot 的性能可觀。

安裝#

1. 在 Linux 平台使用#

i. 安裝 node.js#

使用對應的包管理器或者去官網安裝即可(我選的是寶塔)。建議使用 18 版本,最低不得低於 14 版本,需要配置好環境變量 (包括

NODE_HOME

變量), 以確保命令行能夠正常訪問

node

npm

命令。

假如在配置完環境變量之後仍然無法使用啟動bot,運行以下代碼有奇效:
echo -e "export PATH=(npmprefix−g)/bin:(npm prefix -g)/bin:(npmprefix−g)/bin:PATH" >> ~/.bashrc && source ~/.bashrc
(應該還是我菜)

ii. 全局安裝 KiviBot CLI#

CLI (Command Line Interface) 是命令行界面的縮寫,指通過在終端或命令行中輸入文本命令來操作計算機系統的方式。在 CLI 中,用戶通過鍵盤輸入命令,計算機根據命令執行相應操作。CLI 相對於圖形界面(GUI)來說更靈活、功能更強大,是程序員和系統管理員的首選方式。

npmi -g kivibot@latest

當然,也可以選擇不安裝到全局,然後使用 npm kivi 來執行 CLI 命令

iii. 通過 CLI 引導生成配置文件#

# 創建空目錄作為框架目錄, 並切換到這個目錄mkdir ~/bot && cd ~/bot
# 通過 CLI 引導在當前目錄下生成配置文件
kivi init

iv. 啟動 KiviBot#

kivistart

v. 後台部署(可選)#

kivi deploy
# CLI 將會使用 pm2 將框架進程部署到後台

2. 在 Windows 平台使用#

部署方式同上

3. 在 Android 平台使用 KiviBot#

i. 下載安裝 Termux#

這一步應該不用教吧?

ii. 配置 Termux 國內鏡像源#

sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.aliyun.com/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list
sed -i 's@^\(deb.*games stable\)$@#\1\ndeb https://mirrors.aliyun.com/termux/game-packages-24 games stable@' $PREFIX/etc/apt/sources.list.d/game.list
sed -i 's@^\(deb.*science stable\)$@#\1\ndeb https://mirrors.aliyun.com/termux/science-packages-24 science stable@' $PREFIX/etc/apt/sources.list.d/science.list
pkgupdate

iii. 安裝 Node.js#

pkg install nodejs

剩下的步驟同 Linux 安裝完全相同#

事實上,所有的安裝方式都是通過模擬 / 刷入 Linux 環境來運行 node 從而運行框架,因此從理論上來說你現在帶的電子手錶也可以運行 KiviBot,沒準性能還真的足夠。

配置#

按照步驟安裝好之後,你應該會收到 Bot 的上線提醒。 現在,可以向機器人發送

/help

指令來查看框架所支持的指令列表。

消息指令#

KiviBot

沒有 UI 界面,插件管理、管理變更、狀態監控等操作都是通過

QQ 消息指令

來實現的。向機器人發送

/help

可查看所有框架命令,

僅限管理員使用

, 私聊群聊均有效。 框架所有的消息指令列表:

https://blog-1302893975.cos.ap-shanghai.myqcloud.com/pic/202301272325564.png

KiviBot CLI 命令#

KiviBot CLI 是框架的腳手架,或叫命令行工具,就是你啟動框架的

kivi

命令。 你可以使用它來輔助生成配置文件、安裝插件和依賴、啟動框架等。 輸入

kivi

命令即可查看 CLI 的詳細用法,下表列出了 CLI 的所有命令及其說明。

https://blog-1302893975.cos.ap-shanghai.myqcloud.com/pic/20230127232727.png

配置文件#

框架目錄下的

kivi.json

KiviBot

的配置文件,包含了一系列框架配置,可以手動進行修改,重啟後生效。

kivi start

kivi.json
app.js
{
// Bot QQ 賬號, 由 CLI 引導生成"account": 114514,
// 登錄方式, 由 CLI 引導生成, 可選 password(密碼登錄) 和 qrcode(掃碼登錄)"login_mode": "password",
// 設備鎖驗證方式, 選擇密碼登錄時, 由 CLI 引導生成, 如果選掃碼默認是驗證碼登錄// 可選 sms(短信驗證碼驗證) 和 qrcode(掃碼驗證)"device_mode": "sms",
// 框架日誌消息顯示模式, 默認為 short(精簡模式, 忽略 CQ 碼, 消耗資源少)// 也可設置為 detail(詳細模式, 會顯示 CQ 碼具體內容, 對於調試插件有幫助)"message_mode": "short",
// Bot 賬號密碼, 在選擇密碼登錄時, 由 CLI 引導生成, 如果選擇掃碼默認為空"password": "",
// 框架日誌輸出等級, 默認 info, 不輸出日誌可置為 off, 調試插件可以設為 debug"log_level": "info",
// 管理員列表, 由 CLI 引導生成, 第一个為主管理員(必須), 其餘的為副管理員(可選)"admins": [1141284758],
// 啟用插件列表, 包括 npm 插件(kivibot-plugin- 開頭)和 plugins 目錄下的插件// npm 插件(kivibot-plugin- 開頭)忽略 kivibot-plugin- 前綴"plugins": ["demo"],
// 機器人事件通知"notice": {
// 是否啟用, 可通過消息指令 /config notice on 和 /config notice off 進行實時切換"enable":true,
// 好友列表相關配置"friend": {
// 好友申請"request": {
// 是否開啟好友申請通知, 默認開啟(true), 不開啟請設置為 false"enable":true,

// 處理好友申請, 可選:ignore(忽略, 默認), accept(同意), refuse(拒絕)"action": "ignore"
  },

// 新增好友通知, 默認開啟(true), 不開啟請設置為 false"increase":true,

// 好友減少通知, 默認開啟(true), 不開啟請設置為 false"decrease":true,

// 好友私聊消息通知, 默認關閉(false), 開啟請設置為 true"message":false},

// 群聊相關配置"group": {
// 邀請機器人進群"request": {
// 是否開啟通知, 默認開啟(true), 不開啟請設置為 false"enable":true,

// 處理群邀請, 可選:ignore(忽略, 默認), accept(同意), refuse(拒絕)"action": "ignore"
  },

// 新增群聊通知, 默認開啟(true), 不開啟請設置為 false"increase":true,

// 新增群聊通知, 默認開啟(true), 不開啟請設置為 false"decrease":true,

// 機器人被禁言通知, 默認開啟(true), 不開啟請設置為 false"ban":true,

// 群管理員變動通知, 默認開啟(true), 不開啟請設置為 false"admin":true,

// 群轉讓通知, 默認開啟(true), 不開啟請設置為 false"transfer":true}

},
// oicq 協議配置, 參考 oicq 文檔, data 目錄限制為 data/oicq, 無法手動修改"oicq_config": {
// 登錄協議:1 為安卓手機, 2 為安卓平板, 3 為安卓手錶, 4 為 MacOS, 5 為 iPad"platform": 5,
// oicq 的日誌等級, oicq 日誌會輸出到框架目錄的 logs 文件夾下"log_level": "info",

// 群聊中, 是否忽略機器人自身的消息, 默認忽略, 不忽略請改為 false"ignore_self":true,

// 是否自動選擇最優伺服器, 默認開啟, 關閉請改為 false// 關閉後會一直使用 msfwifi.3g.qq.com:8080 進行連接"auto_server":true,

// 是否緩存群員列表, 默認緩存提高效率, 關閉後將大幅減小佔用的內存"cache_group_member":true,

// 網絡問題導致掉線時的重連間隔, 默認 5(秒), 設置為 0 不自動重連"reconn_interval": 5,

// 被風控時是否嘗試用分片發送, 默認 true, 不發送分片請設置為 false"resend":true,

// 指定 ffmpeg 路徑"ffmpeg_path": "ffmpeg",

// 指定 ffprobe 路徑"ffprobe_path": "ffprobe"

}
}

常見問題#

會有很多常見問題,但是我懶得看了,湊合著用吧

插件#

KiviBot

的插件分為以下兩種:

  • npm 插件

  • 本地插件 不管是 npm 插件還是本地插件,他們都應該是符合 CommonJS 規範的 node 模塊。插件配置文件統一放在了 框架目錄/data/plugins/<name> 對應目錄下(一般是 config.json 文件), 沒做特殊說明外,大部分官方插件的配置請在此處修改,直接修改源碼會在更新時被覆蓋導致配置無效。

    node 模塊,即:模塊目錄下存在

    index.js
    
    package.json
    
    package.json
    
    main
    

npm 插件#

所謂 npm 插件,就是可以使用

/plugin add

消息指令直接從 npm 下載安裝的插件(也可通過

npm

或者

kivi

命令在終端進行安裝)。通常這類插件的命名遵循

kivibot-plugin-

開頭的約定。官方插件會採取這種形式發布到 npm 提高用戶體驗。npm 插件需要先安裝才能使用,安裝完成後,會被存放於框架目錄下的

node_modules

目錄下,你可以在裡面找到插件的源代碼。

在使用消息指令安裝或者啟用插件時,不需要帶上 kivibot-plugin- 前綴。

本地插件#

顧名思義,本地插件是指沒有被發布到 npm 的本地插件(如用戶自行開發的插件,或者一些私人插件), 不需要下載。存放在框架目錄下的

plugins

目錄下。和 npm 插件一樣,每一個插件都應該是一個符合

CommonJS

規範的 node 模塊。

使用體驗#

此機器人配置簡單,插件多且開發友好,只可惜作者跑路了。 雖然它的對話功能比一號機多了些 bug,不支持性格調教設定,但是多了很多花里胡哨的功能(對我來說實用性一般)

還是等 ChatGPT 的 api 開放吧,現在的 3.0 太死板了。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。