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
Articles
API Reference
Other pages
日本語
ガイド
開発者
記事
API リファレンス
Other pages

Clone this wiki locally