二号機 - KiviBot:軽量高効率、クロスプラットフォームの QQ ボット#
date: 2023 年 1 月 27 日
slug: 18
status: 公開
tags: 技術
type: 投稿
Bot 紹介#
KiviBot はTypeScript言語で書かれた軽量、優雅、クロスプラットフォーム、開発者フレンドリー、動けば良いQQ ボットフレームワークです。
フレームワークは完備の状態監視、プラグイン管理(ホットアップデート対応)、主副管理者メカニズム、メッセージ通知、リクエスト処理機能、そしてフレンドリーなスキャフォールドを提供し、すぐに使えます。フレームワークは完全にオープンソースで、拡張性が高く、プラグイン開発が簡単で、コアの底層プロトコルは oicq v2 を使用し、API が多数あり、機能が強力です。また、フレームワークは node を使用して駆動されており、node とその効率的な v8 エンジンのおかげで、KiviBot の性能は優れています。
インストール#
1.Linux プラットフォームでの使用#
i.node.js のインストール#
対応するパッケージマネージャーを使用するか、公式サイトからインストールできます(私は宝塔を選びました)。18 バージョンを使用することをお勧めします。最低でも 14 バージョン以上で、環境変数を正しく設定する必要があります(
NODE_HOME
変数を含む)、コマンドラインが正常にアクセスできるようにするために
node
と
npm
コマンドを確認してください。
環境変数を設定した後でもボットを起動できない場合、以下のコードを実行すると効果があります:
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 を実行できるかもしれませんし、性能が本当に十分かもしれません。
設定#
手順に従ってインストールが完了すると、ボットのオンライン通知を受け取るはずです。今、ボットに
/help
コマンドを送信して、フレームワークがサポートするコマンドのリストを確認できます。
メッセージコマンド#
KiviBot
UI インターフェースはなく、プラグイン管理、管理変更、状態監視などの操作はすべて
QQ メッセージコマンド
を通じて実現されます。ボットに
/help
を送信すると、すべてのフレームワークコマンドを確認できます。
管理者のみ使用可能
で、プライベートチャットでもグループチャットでも有効です。フレームワークのすべてのメッセージコマンドのリスト:
KiviBot CLI コマンド#
KiviBot CLI はフレームワークのスキャフォールド、またはコマンドラインツールであり、フレームワークを起動するための
kivi
コマンドです。これを使用して設定ファイルの生成、プラグインや依存関係のインストール、フレームワークの起動などを支援できます。入力して
kivi
コマンドを実行すると、CLI の詳細な使い方が表示されます。以下の表には CLI のすべてのコマンドとその説明が示されています。
設定ファイル#
フレームワークディレクトリ内の
kivi.json
は
KiviBot
の設定ファイルであり、一連のフレームワーク設定が含まれており、手動で変更可能で、再起動後に有効になります。
kivi start
kivi.json
app.js
{
// ボットQQアカウント、CLIによって生成される"account": 114514,
// ログイン方式、CLIによって生成される、選択肢はpassword(パスワードログイン)とqrcode(QRコードログイン)"login_mode": "password",
// デバイスロック検証方式、パスワードログインを選択した場合、CLIによって生成される、QRコードを選択した場合はデフォルトで認証コードログイン// 選択肢はsms(SMS認証コード検証)とqrcode(QRコード検証)"device_mode": "sms",
// フレームワークログメッセージ表示モード、デフォルトはshort(簡略モード、CQコードを無視し、リソース消費が少ない)// detail(詳細モード、CQコードの具体的内容を表示し、プラグインのデバッグに役立つ)に設定可能"message_mode": "short",
// ボットアカウントパスワード、パスワードログインを選択した場合、CLIによって生成される、QRコードログインを選択した場合はデフォルトで空"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はAndroidスマートフォン、2はAndroidタブレット、3はAndroidスマートウォッチ、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
のプラグインは以下の 2 種類に分かれます:
-
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 モジュールである必要があります。
使用体験#
このボットは設定が簡単で、プラグインが多く、開発者に優しいですが、残念ながら作者が逃げてしまいました。対話機能は一号機よりもいくつかのバグが多く、性格調教設定をサポートしていませんが、多くの華やかな機能が追加されています(私にとっては実用性が一般的です)。
やはり ChatGPT の API が開放されるのを待つべきでしょう。今の 3.0 はあまりにも堅苦しいです。