Skip to content

「info.json」ファイルについて

KEINOS edited this page Jul 8, 2018 · 2 revisions

概要

info.json」ファイルを設置すると Qithub コマンド(以下コマンド)に関する情報の提供や、コマンド側からユーザへ情報のリクエストができるようになります。

info.jsonファイルの設置は必須ではありません

info.json」ファイルの役割

各コマンドのディレクトリ直下(「Main.xxx」と同階層)に「info.json」の JSON ファイルがあった場合、BOT などのコマンドを実行する側はコマンドが提供および要求(リクエスト)している情報をあらかじめ確認することができます

具体的には、コマンドの「バージョン情報の提供」や「ユーザーのアクセストークンのリクエスト」などです。

コマンドの呼び出し元は、この JSON ファイルに記載されている情報をあらかじめ確認し、引数(Qithub エンコードされたデータ)に必要事項を含めてコマンドを呼び出すことになります。

この仕様により、コマンドは「info.json」に記載した情報をクライアントから取得/提供できるようになります。

info.json」に対する BOT の大まかな処理の流れ

  1. BOT がトゥート内容より BOT のメンションとコマンドを検知
    (「@qithub:????」、????はコマンド名)
  2. コマンドのディレクトリ直下に info.json があった場合、JSON 配列の読み込み
    ????/info.json
  3. コマンドにオプション(???? --versionなどのオプション)が付いている場合、info.json の配列の第1階層のキー名を検索します。
    • 検索でヒットした場合: その値を返信トゥートし処理を終了(コマンドは呼び出されない)
    • 検索でヒットしなかった場合: トゥートのコマンド全体をコマンド・プログラム本体(????/Main.xxx)に引数で渡し、処理結果を返信トゥートし処理を終了

処理の例

▼ コマンドのディレクトリ階層(コマンド「????」の場合)

━━ ????/
    ┣━ Main.py
    ┗━ info.json

▼ info.json の内容

{
    "version": "v0.1.0-beta"
}

info.json にあるオプションの場合

▼ BOT が受けとったトゥートの内容(例1)

@qithub:???? --version

上記トゥート・コマンドの場合、BOT は info.json から version キーの要素を検索し、その値を返信するので、コマンドは実行されず「v0.1.0-beta」をユーザーに返信トゥートします。

info.json にないオプションの場合

▼ BOT が受けとったトゥートの内容(例2)

@qithub:???? --hoge fuga

上記トゥート・コマンドの場合は、info.json には hoge キーは存在しないため、以下の JSON データをコマンドに渡します。
この際、渡されるのは Qithub エンコードされた文字列であることに注意ください。

{
    "name_cmd": "????",
    "args_cmd": "--hoge fuga"
}

▼ 引数が受け取るQithub エンコードデータ

%7B%22name_cmd%22%3A%22%3F%3F%3F%3F%22%2C%22args_cmd%22%3A%22--hoge+fuga%22%7D

詳しくは次項の「「info.json」ファイルの仕様1「コマンドの情報提供」(オプション機能)」をご覧ください。


▶︎ 次項: 「info.json」ファイルの仕様1「コマンドの情報提供」(オプション機能)

Clone this wiki locally