Mirai Protocol Adapter#

The Mirai Protocol Adapter is an adapter for the mirai-api-http protocol. You need to install mirai-api-http following the instructions in its documentation.

Please note that this adapter only supports mirai-api-http version 2.3 and above.

This adapter supports both the Websocket Adapter mode and the Reverse Websocket Adapter mode of mirai-api-http.

Installation#

pip install iamai-adapter-mirai

Configuring the Protocol Endpoint#

Edit the setting.yml configuration file of mirai-api-http:

Websocket Adapter Mode#

adapters:
  - ws
enableVerify: true
verifyKey: 1234567890
adapterSettings:
  ws:
    host: localhost
    port: 8080
    reservedSyncId: -1

Reverse Websocket Adapter Mode#

adapters:
  - reverse-ws
enableVerify: true
verifyKey: 1234567890
singleMode: true
adapterSettings:
  reverse-ws:
    destinations:
    - host: localhost
      port: 8080
      path: /mirai/ws
      protocol: ws
      method: GET
    reservedSyncId: -1

Configuring iamai#

Edit the config.toml configuration file of iamai.

For more options, please refer to the Mirai configuration.

Websocket Adapter Mode#

[bot]
adapters = ["iamai.adapter.mirai"]

[adapter.mirai]
adapter_type = "ws"
verify_key = "1234567890"
qq = "机器人QQ号"

Reverse Websocket Adapter Mode#

[bot]
adapters = ["iamai.adapter.mirai"]

[adapter.mirai]
adapter_type = "reverse-ws"
verify_key = "1234567890"
qq = "机器人QQ号"

Sending Rich Text Messages#

Similar to the CQHTTP protocol adapter, the Mirai adapter can easily construct rich text messages.


from iamai import Plugin
from iamai.adapter.mirai.message import MiraiMessageSegment


class Halloiamai(Plugin):
    async def handle(self) -> None:
        msg = MiraiMessageSegment.plain("Hello, iamai!") + \
              MiraiMessageSegment.image(url="https://www.example.org/1.jpg")
        await self.event.reply(msg)

    async def rule(self) -> bool:
        if self.event.adapter.name != "mirai":
            return False
        if self.event.type != "FriendMessage":
            return False
        return self.event.message.get_plain_text().lower() == "hello"

For more usage, please refer to mirai-api-http message segment types and Mirai messages.

Calling mirai-api-http API#

You can use the following method to call mirai-api-http API:


from iamai import Plugin


class TestPlugin(Plugin):
    async def handle(self) -> None:
        resp = await self.event.adapter.call_api("friendProfile", target=10001)
        # Equivalent to resp = await self.event.adapter.friendProfile(target=10001)

    async def rule(self) -> bool:
        return self.event.adapter.name == "mirai"

For more usage, please refer to mirai-api-http documentation .