モジュールの導入
ファイルから
.go ファイルを任意のチャットに送り、それに返信して次を送ります。
.loadmodGoroku がネイティブの 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 でコマンドが実際に登録されたか確認して ください。CommandMetas に OnlyGroups のような制限があると、個人チャットでは 発火しません。