Skip to content

ja plugin dev apis messages

langbot-wiki-sync[bot] edited this page Jul 29, 2026 · 1 revision

メッセージプラットフォームエンティティ

LangBotは複数のメッセージングプラットフォームをサポートしており、各プラットフォームには異なるメッセージエンティティフォーマットがあります。これらの違いを抽象化するために、統一された標準を実装しました。プラグイン開発者は、プラグイン内でこのページに記載されているメッセージエンティティを習得して使用するだけで、LangBotの内部メッセージ処理ロジックがメッセージの解析と変換を自動的に処理します。

メッセージチェーン

メッセージングプラットフォーム上のメッセージは、AI対話に使用されるメッセージとは異なります。メッセージングプラットフォーム上のメッセージは、メッセージチェーンの形式で記述されます。QQに表示される各独立したメッセージはメッセージチェーンであり、テキスト画像@メンションなどのさまざまなメッセージチェーンコンポーネントを含むことができます。例えば:

これは、1つのPlainコンポーネント(Hello World)と1つのImageコンポーネント(Usagi)を含むメッセージチェーンです。

メッセージチェーンとメッセージチェーンコンポーネントの定義は、langbot_plugin.api.entities.builtin.platform.messageにあります。

メッセージチェーンの構築

まず、langbot_plugin.api.entities.builtin.platform.messageパッケージをインポートして、その中のメッセージコンポーネントを使用してください。

from langbot_plugin.api.entities.builtin.platform.message import *

# テキスト「Hello LangBot」と画像(URLから)を含むメッセージを構築
msg_chain = MessageChain([
    Plain(text="Hello LangBot"),
    Image(url='https://qchatgpt.rockchin.top/langbot-logo.png')
])

# @全員とテキスト「Hello LangBot」を含むメッセージを構築
msg_chain = MessageChain([
    AtAll(),
    Plain(text="Hello LangBot")
])

# @特定のメンバーとテキスト「Hello LangBot」を含むメッセージを構築
msg_chain = MessageChain([
    At(target=123456),
    Plain(text="Hello LangBot")
])

現在サポートされているメッセージチェーンコンポーネント:

  • Source - ソースメッセージチェーン情報。メッセージングプラットフォームから受信したメッセージには、メッセージ情報を記録するためにメッセージチェーンの先頭にこのコンポーネントが含まれます
  • Plain - プレーンテキストメッセージ
  • Quote - 引用メッセージ
  • Image - 画像メッセージ
  • AtAll - @全員メッセージ
  • At - @特定のメンバーメッセージ
  • Voice - 音声メッセージ
    • メッセージングプラットフォームのサポートを確認する必要があります
  • Forward - 転送メッセージ
    • 多くのプラットフォームでサポートされていないため、推奨されません
  • File - ファイルメッセージ

コンポーネントを作成する際は、名前付きパラメータを使用する必要があります。具体的な使用方法については、ソースコードlangbot_plugin.api.entities.builtin.platform.messageの定義を確認してください。

その他のエンティティ

上記のエンティティに加えて、FriendGroupなどのエンティティもあります。これらのエンティティはlangbot_plugin.api.entities.platform.entitiesで定義されています。

基盤プラットフォームAPIへのアクセス

Warning

4.xには適用されません。

プラットフォームの違いを抽象化するために、LangBotはメッセージングプラットフォームAPIの上に抽象化レイヤーを提供しています。これには、上記で説明した内容と、pkg/platform/sourcesディレクトリ内のさまざまなプラットフォームアダプターが含まれます。 ただし、プラットフォームの違いが大きいため、抽象化レイヤーのエンティティとAPIのカプセル化は完全ではありません。プラグインがプラットフォーム固有の機能にアクセスする必要がある場合は、次の手順に従って基盤APIにアクセスできます。

Note

      # 例えばプラグイン内で
      @handler(GroupMessageReceived)
      async def _(self, ctx: EventContext):
          # アダプターオブジェクトを取得
          adapter = ctx.query.adapter
プラットフォーム アダプター アクセス方法 説明
OneBot v11 aiocqhttp adapter.bot botオブジェクトはaiocqhttp CQHttpオブジェクトに対応します。詳細な使用方法についてはaiocqhttpドキュメントを参照してください
QQ公式API qqofficial adapter.bot botオブジェクトはlibs/qq_official_api以下のSDKオブジェクトです。詳細な使用方法については、libs/qq_official_api/api.pyのQQOfficialClient内のsend_group_text_msgメソッドを参照してHTTPリクエストメソッドを確認し、具体的なインターフェースドキュメントについてはQQ公式APIドキュメントを参照してください
WeCom(企業微信) wecom adapter.bot libs/wecom_api/api.pyのWecomClient内のsend_imageメソッドを参照してHTTPリクエストメソッドを確認し、具体的なインターフェースドキュメントについてはWeCom APIドキュメントを参照してください
WeChat公式アカウント officialaccount - インターフェースドキュメントについてはWeChat公式アカウントAPIドキュメントを参照してください。認証情報はadapter.botから取得できます
Lark lark adapter.api_client Lark SDKのAPI Clientオブジェクトです。詳細についてはoapi-sdk-pythonを参照してください
DingTalk dingtalk - DingTalk APIドキュメントを参照してください。認証情報はadapter.botから取得できます
Discord discord adapter.bot botオブジェクトはRapptz/discord.py Discordオブジェクトです。詳細な使用方法についてはドキュメントを参照してください
Telegram telegram adapter.bot botオブジェクトはpython-telegram-bot Telegramオブジェクトです。詳細な使用方法についてはドキュメントを参照してください
Slack slack adapter.bot botオブジェクトはlibs/slack_api/api.py内にあります。詳細な使用方法についてはそのコードとSlack SDKを参照してください

LangBot Documentation

Home

简体中文
指南
开发者
API 参考
Other pages
English
Guides
Developers
API Reference
Other pages
日本語
ガイド
開発者
API リファレンス
Other pages

Clone this wiki locally