简体中文 English 繁體中文 日本語 Русский
本文为静态镜像,内容以交互版为准 在交互式文档中心打开 →

ErisPulse アダプタ標準化返却仕様

1. 説明

なぜこの規格があるのでしょうか?

各プラットフォームの送信インターフェースが一貫性とOneBot12との互換性を確保するため、ErisPulseアダプターはAPIレスポンス形式においてOneBot12が定義するメッセージ送信返却構造の標準を採用しています。

ただしErisPulseのプロトコルにはいくつかの特殊な定義があります:

2. 基礎レスポンス構造

すべてのアクションレスポンスには、以下の基本フィールドを含める必要があります。

フィールド名 データ型 必須 説明
status string はい 実行ステータス。"ok"または"failed"のいずれかに設定する必要があります
retcode int64 はい 戻り値コード。OneBot12の戻り値コード規則に従います
data any はい レスポンスデータ。成功時はリクエスト結果を含み、失敗時はnull
message_id string はい メッセージID。メッセージを識別するためのもので、存在しない場合は空文字列
message string はい エラーメッセージ。成功時は空文字列
{platform_name}_raw any いいえ 元のレスポンスデータ

オプションフィールド:

フィールド名 データ型 必須 説明
echo string いいえ リクエストにechoフィールドが含まれている場合、その値をそのまま返します

3. 完全なフィールド仕様

3.1 一般的なフィールド

成功時のレスポンス例

{
    "status": "ok",
    "retcode": 0,
    "data": {
        "message_id": "1234",
        "time": 1632847927.599013
    },
    "message_id": "1234",
    "message": "",
    "echo": "1234",
    "telegram_raw": {...}
}

失敗時のレスポンス例

{
    "status": "failed",
    "retcode": 10003,
    "data": null,
    "message_id": "",
    "message": "必要なパラメータが不足しています: user_id",
    "echo": "1234",
    "telegram_raw": {...}
}

3.2 戻り値コードの仕様

0 成功(OK)

1xxxx 動作リクエストエラー(Request Error)

エラーコード エラー名 説明
10001 Bad Request 無効な動作リクエスト
10002 Unsupported Action 対応していない動作リクエスト
10003 Bad Param 無効な動作リクエストパラメータ
10004 Unsupported Param 対応していない動作リクエストパラメータ
10005 Unsupported Segment 対応していないメッセージセグメントの種類
10006 Bad Segment Data 無効なメッセージセグメントパラメータ
10007 Unsupported Segment Data 対応していないメッセージセグメントパラメータ
10101 Who Am I ロボットアカウントが指定されていません
10102 Unknown Self 知らないロボットアカウント

2xxxx 動作ハンドラーエラー(Handler Error)

エラーコード エラー名 説明
20001 Bad Handler 動作ハンドラーの実装エラー
20002 Internal Handler Error 動作ハンドラーが実行中に例外をスローしました

3xxxx 動作実行エラー(Execution Error)

エラーコード範囲 エラー種別 説明
31xxx Database Error データベースエラー
32xxx Filesystem Error ファイルシステムエラー
33xxx Network Error ネットワークエラー
34xxx Platform Error ロボットプラットフォームエラー
35xxx Logic Error 動作ロジックエラー
36xxx I Am Tired 実装が作業を中止することを決定しました

保留エラーセグメント

4. 実装要件

  1. すべてのレスポンスには status、retcode、data、message フィールドが含まれている必要があります。
  2. リクエストに非空の echo フィールドが含まれている場合、レスポンスには同じ値の echo フィールドが含まれている必要があります。
  3. 戻り値コードは OneBot12 規格に厳密に従う必要があります。
  4. エラーメッセージ(message)は人間に読みやすい説明文である必要があります。

5. 拡張仕様

ErisPulse は OneBot12 標準の返却構造に以下の拡張を加えています。

5.1 message_id 必須フィールド

OneBot12 標準では message_id は data オブジェクト内にあり、必須ではありません。ErisPulse ではこれをトップレベルの必須フィールドに昇格させています:

5.2 {platform}_raw 原始レスポンスフィールド

返却値には、プラットフォームの原始レスポンスデータの完全なコピーを保持する {platform}_raw フィールドを含める必要があります:

{
    "status": "ok",
    "retcode": 0,
    "data": {"message_id": "1234", "time": 1632847927},
    "message_id": "1234",
    "message": "",
    "telegram_raw": {
        "ok": true,
        "result": {"message_id": 1234, "date": 1632847927, ...}
    }
}

要件:

5.3 フレームワーク拡張返却コード(34xxx プラットフォームエラーセグメントの下3桁をカスタム)

OneBot12 規格では、実装が 3xxxx の下3桁をカスタムに使用することが許可されています。34xxx の意味は Platform Error(ロボットプラットフォームエラー、プラットフォーム制限による失敗など)です。34xxx 内部では役割ごとに分層して使用されます:

下3桁セグメント 所属 用途
340xx アダプター実装 リクエスト操作族(Request Not Found / Already Handled / Not Supported / Permission Denied、request-action-spec §7 参照)
341xx~345xx アダプター実装 プラットフォーム側の権限 / リスク管理 / アカウント制限などのエラー(実装者が下3桁をカスタム、元のエラーは {platform}_raw に格納)
346xx ErisPulse フレームワーク(予約済み) フレームワーク自身のブロックと一般的な失敗、アダプターやモジュールは使用しない
347xx~349xx アダプター実装 その他のプラットフォーム実行エラー

ErisPulse フレームワークで現在使用している 346xx コード:

エラーコード エラー名 説明
34600 SDK Failure フレームワークの一般的な失敗(make_error() のデフォルト返却コード)
34601 Action Denied 出力アクションがスコープによって禁止された(scope.actions)、呼び出しは行われず、直接このレスポンスを返す

役割の区別:34601 はフレームワークが呼び出し前にブロック(モジュールはそもそもアクションを発行する資格がない)です。 34004 / 34xxx プラットフォームコードはアクションは発行されたがプラットフォームが拒否(Bot に権限がない、リスク管理対象など)です。 モジュールは権限の問題を判断する際に、これら2つを同時にチェックする必要があります:まず 34601(自分のモジュールが scope によって禁止されているか)を確認し、次に 34xxx(プラットフォーム側の制限)を確認します。

返却構造は §2 の標準失敗レスポンスに従います:

{
    "status": "failed",
    "retcode": 34601,
    "data": null,
    "message_id": "",
    "message": "action 'send' denied by scope.actions"
}

5.4 アダプター実装チェックリスト

6. 注意事項