> ## Documentation Index
> Fetch the complete documentation index at: https://docs.langbot.app/llms.txt
> Use this file to discover all available pages before exploring further.

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

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

## メッセージチェーン

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

<img src="https://mintcdn.com/langbot/3wTxBGgCdTnu0gxf/images/zh/plugin/dev/apis/plugin_dev_messages_01.png?fit=max&auto=format&n=3wTxBGgCdTnu0gxf&q=85&s=04c582dda13d3b76dcc5bd4279628e5d" alt="" width="280" height="221" data-path="images/zh/plugin/dev/apis/plugin_dev_messages_01.png" />

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

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

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

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

```python theme={null}
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`の定義を確認してください。

## その他のエンティティ

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

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

<Warning>
  4.xには適用されません。
</Warning>

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

<Info>
  ```python theme={null}
      # 例えばプラグイン内で
      @handler(GroupMessageReceived)
      async def _(self, ctx: EventContext):
          # アダプターオブジェクトを取得
          adapter = ctx.query.adapter
  ```
</Info>

| プラットフォーム      | アダプター           | アクセス方法              | 説明                                                                                                                                                                                                          |
| ------------- | --------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| OneBot v11    | aiocqhttp       | adapter.bot         | botオブジェクトは[aiocqhttp](https://github.com/nonebot/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](https://github.com/larksuite/oapi-sdk-python)を参照してください                                                                                                 |
| DingTalk      | dingtalk        | -                   | DingTalk APIドキュメントを参照してください。認証情報はadapter.botから取得できます                                                                                                                                                        |
| Discord       | discord         | adapter.bot         | botオブジェクトは[Rapptz/discord.py](https://github.com/Rapptz/discord.py) Discordオブジェクトです。詳細な使用方法についてはドキュメントを参照してください                                                                                             |
| Telegram      | telegram        | adapter.bot         | botオブジェクトは[python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) Telegramオブジェクトです。詳細な使用方法についてはドキュメントを参照してください                                                                    |
| Slack         | slack           | adapter.bot         | botオブジェクトはlibs/slack\_api/api.py内にあります。詳細な使用方法についてはそのコードとSlack SDKを参照してください                                                                                                                                 |
