Skip to content

モジュールの導入

ファイルから

.go ファイルを任意のチャットに送り、それに返信して次を送ります。

.loadmod

Goroku がネイティブの Go プラグインとしてコンパイルし、コマンドを登録し、次回の 起動時に再読み込みできるよう記憶します。

エイリアス: .lm

URL から

.dlmod https://example.com/Weather.go

設定済みリポジトリから名前で指定することもできます。

.dlmod Weather

エイリアス: .dlm

ダウンロードは HTTPS のみです。プライベート、ループバック、リンクローカル、CGNAT のアドレスは拒否され、検査はホスト名ではなく解決後の IP に対して行われます。

取り外す

.unloadmod Weather

エイリアス: .ulm

取り外してもコードは解放されない

Go は読み込んだプラグインをメモリから外せません。.unloadmod はハンドラの登録を 解除するのでモジュールは何も受け取らなくなりますが、そのコードは再起動まで プロセスに残ります。取り外し後にきれいな状態にしたいなら .restart してください。

リポジトリ

.addrepo https://raw.githubusercontent.com/user/modules/main
.delrepo https://raw.githubusercontent.com/user/modules/main

以後 .dlmod <名前> は設定済みリポジトリを検索します。

他人のモジュールを導入する前に

ネイティブモジュールは、あなたのユーザーボットのプロセス内で動く通常の Go コード です。あなたの Telegram セッションと、サーバーの権限を持ちます。アカウントが読める すべてのメッセージを読め、あなたとして送信でき、ファイルを読み、ネットワーク接続を 開けます。サンドボックスはありません。

まずソースを読んでください。具体的には。

  • 予期しない場所へデータを送っていないか。http.net. を探します。
  • 外部プログラムを起動していないか。exec. を探します。
  • 自分のストレージ外のファイルに触れていないか。os. を探します。
  • ウォッチャーを登録していないか。それはあなたが見られるすべてのメッセージを見ます。

.eval も安全ではありません。Yaegi によりボットのプロセス内で、生きた クライアント・データベース・ローダーとともに動きます。Yaegi は中断できないため、 止まらないコードは再起動までゴルーチンを占有します。だからこそ所有者専用です。

うまくいかないとき

「module X is already registered」 — 同名のモジュールが読み込み済みです。先に .unloadmod X してください。

「command collision: y」 — そのコマンドかエイリアスを別のモジュールが既に 持っています。自分のほうを改名してください。Goroku は黙って覆い隠さず拒否します。

コンパイルエラー — 示される行番号はあなたのファイルのものです。直して再度 .loadmod します。

読み込まれたが何も起きない.help でコマンドが実際に登録されたか確認して ください。CommandMetasOnlyGroups のような制限があると、個人チャットでは 発火しません。

Released under the GNU AGPL v3 License.