消息类型说明

消息链类型

好友消息

{
    "type": "FriendMessage",
    "sender": {
        "id": 123,
        "nickname": "",
        "remark": ""
    },
    "messageChain": [] // 数组,内容为下文消息类型
}

群消息

{
    "type": "GroupMessage",
    "sender": {
        "id": 123,
        "memberName": "",
        "specialTitle": "",
        "permission": "OWNER",
        "joinTimestamp": 0,
        "lastSpeakTimestamp": 0,
        "muteTimeRemaining": 0,
        "group": {
            "id": 321,
            "name": "",
            "permission": "MEMBER",
        },
    },
    "messageChain": [] // 数组,内容为下文消息类型
}

群临时消息

{
    "type": "TempMessage",
    "sender": {
        "id": 123,
        "memberName": "",
        "specialTitle": "",
        "permission": "OWNER",
        "joinTimestamp": 0,
        "lastSpeakTimestamp": 0,
        "muteTimeRemaining": 0,
        "group": {
            "id": 321,
            "name": "",
            "permission": "MEMBER",
        },
    },
    "messageChain": [] // 数组,内容为下文消息类型
}

陌生人消息

{
    "type": "StrangerMessage",
    "sender": {
        "id": 123,
        "nickname": "",
        "remark": ""
    },
    "messageChain": [] // 数组,内容为下文消息类型
}

其他客户端消息

{
    "type": "OtherClientMessage",
    "sender": {
        "id": 123,
        "platform": "MOBILE"
    },
    "messageChain": [] // 数组,内容为下文消息类型
}

同步消息链类型

同步消息和普通消息一样, 但是由 Bot 账号的其他客户端发送的消息, 同步到 mirai 时产生的事件. 此类事发送人永远是 Bot 本身, 故省略

同步好友消息

{
    "type": "FriendSyncMessage",
    "subject": {
        "id": 123,
        "nickname": "",
        "remark": ""
    },
    "messageChain": [] // 数组,内容为下文消息类型
}

subject 为发送的目标好友

同步群消息

{
    "type": "GroupSyncMessage",
    "subject": {
      "id": 321,
      "name": "",
      "permission": "MEMBER",
    },
    "messageChain": [] // 数组,内容为下文消息类型
}

subject 为发送的目标群

同步群临时消息

{
    "type": "TempSyncMessage",
    "subject": {
        "id": 123,
        "memberName": "",
        "specialTitle": "",
        "permission": "OWNER",
        "joinTimestamp": 0,
        "lastSpeakTimestamp": 0,
        "muteTimeRemaining": 0,
        "group": {
            "id": 321,
            "name": "",
            "permission": "MEMBER",
        },
    },
    "messageChain": [] // 数组,内容为下文消息类型
}

subject 为发送的目标群成员,对应群信息在群成员的 group 字段

同步陌生人消息

{
    "type": "StrangerSyncMessage",
    "subject": {
        "id": 123,
        "nickname": "",
        "remark": ""
    },
    "messageChain": [] // 数组,内容为下文消息类型
}

subject 为发送的目前陌生人账号

消息类型

Source

{
    "type": "Source",
    "id": 123456,
    "time": 123456
}
名字类型说明
idInt消息的识别号,用于引用回复(Source类型永远为chain的第一个元素)
timeInt时间戳

Quote

{
    "type": "Quote",
    "id": 123456,
    "groupId": 123456789,
    "senderId": 987654321,
    "targetId": 9876543210,
    "origin": [
        { "type": "Plain", text: "text" }
    ] 
}
名字类型说明
idInt被引用回复的原消息的messageId
groupIdLong被引用回复的原消息所接收的群号,当为好友消息时为0
senderIdLong被引用回复的原消息的发送者的QQ号
targetIdLong被引用回复的原消息的接收者者的QQ号(或群号)
originObject被引用回复的原消息的消息链对象

At

{
    "type": "At",
    "target": 123456,
    "display": "@Mirai"
}
名字类型说明
targetLong群员QQ号
displayStringAt时显示的文字,发送消息时无效,自动使用群名片

AtAll

{
    "type": "AtAll"
}
名字类型说明
---

Face

{
    "type": "Face",
    "faceId": 123,
    "name": "bu",
    "superFace": false
}
名字类型说明
faceIdIntQQ表情编号,可选,优先高于name
nameStringQQ表情拼音,可选
isSuperFaceBoolean超级表情,默认 false

Plain

{
    "type": "Plain",
    "text": "Mirai牛逼"
}
名字类型说明
textString文字消息

Image

{
    "type": "Image",
    "imageId": "{01E9451B-70ED-EAE3-B37C-101F1EEBF5B5}.mirai",  //群图片格式
    //"imageId": "/f8f1ab55-bf8e-4236-b55e-955848d7069f"      //好友图片格式
    "url": "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "path": null,
    "base64": null,
    "width": 0,
    "height": 0,
    "size": 0,
    "imageType": "UNKNOWN",
    "isEmoji": false
}
名字类型说明
imageIdString图片的imageId,群图片与好友图片格式不同。不为空时将忽略url属性
urlString图片的URL,发送时可作网络图片的链接;接收时为腾讯图片服务器的链接,可用于图片下载
pathString图片的路径,发送本地图片,路径相对于 JVM 工作路径(默认是当前路径,可通过 -Duser.dir=...指定),也可传入绝对路径。
base64String图片的 Base64 编码
widthInt图片宽度
heightInt图片高度
sizeLong图片大小
imageTypeString图片类型,bmp,jpg 等
isEmojiBoolean图片是否为动画表情

FlashImage

{
    "type": "FlashImage",
    "imageId": "{01E9451B-70ED-EAE3-B37C-101F1EEBF5B5}.mirai",  //群图片格式
    //"imageId": "/f8f1ab55-bf8e-4236-b55e-955848d7069f"      //好友图片格式
    "url": "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "path": null,
    "base64": null,
    "width": 0,
    "height": 0,
    "size": 0,
    "imageType": "UNKNOWN",
    "isEmoji": false
}

Image

三个参数任选其一,出现多个参数时,按照imageId > url > path > base64的优先级

Voice

{
    "type": "Voice",
    "voiceId": "23C477720A37FEB6A9EE4BCCF654014F.amr",
    "url": "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "path": null,
    "base64": null,
    "length": 1024,
}
名字类型说明
voiceIdString语音的voiceId,不为空时将忽略url属性
urlString语音的URL,发送时可作网络语音的链接;接收时为腾讯语音服务器的链接,可用于语音下载
pathString语音的路径,发送本地语音,路径相对于 JVM 工作路径(默认是当前路径,可通过 -Duser.dir=...指定),也可传入绝对路径。
base64String语音的 Base64 编码
lengthLong返回的语音长度, 发送消息时可以不传

三个参数任选其一,出现多个参数时,按照voiceId > url > path > base64的优先级

Xml

{
    "type": "Xml",
    "xml": "XML"
}
名字类型说明
xmlStringXML文本

Json

{
    "type": "Json",
    "json": "{}"
}
名字类型说明
jsonStringJson文本

App

{
    "type": "App",
    "content": "<>"
}
名字类型说明
contentString内容

Poke

{
    "type": "Poke",
    "name": "SixSixSix"
}
名字类型说明
nameString戳一戳的类型
  1. "Poke": 戳一戳
  2. "ShowLove": 比心
  3. "Like": 点赞
  4. "Heartbroken": 心碎
  5. "SixSixSix": 666
  6. "FangDaZhao": 放大招

Dice

{
  "type": "Dice",
  "value": 1
}
名字类型说明
valueInt点数

MarketFace

{
  "type": "MarketFace",
  "id": 123,
  "name": "商城表情"
}
名字类型说明
idInt商城表情唯一标识
nameString表情显示名称

目前商城表情仅支持接收和转发,不支持构造发送

MusicShare

{
  "type": "MusicShare",
  "kind": "String",
  "title": "String",
  "summary": "String",
  "jumpUrl": "String",
  "pictureUrl": "String",
  "musicUrl": "String",
  "brief": "String"
}
名字类型说明
kindString类型
titleString标题
summaryString概括
jumpUrlString跳转路径
pictureUrlString封面路径
musicUrlString音源路径
briefString简介

ForwardMessage

{
  "type": "Forward",
  "display": {
    "title": "群聊的聊天记录",
    "brief": "[聊天记录]",
    "source": "聊天记录",
    "preview": ["msg1", "msg2", "msg3", "msg4"],
    "summary": "查看x条转发消息"
  },
  "nodeList": [
    {
      "senderId": 123,
      "time": 0,
      "senderName": "sender name",
      "messageChain": [],
      "messageId": 123,
      "messageRef": {
        "messageId": 123,
        "target": 321,
      }
    }
  ] 
}
名字类型说明
displayobject转发消息的卡片显示文本,参考上文json确认参数含义,值为表示使用客户端默认值;display为空表示全用默认值
nodeListobject消息节点
senderIdLong发送人QQ号
timeInt发送时间
senderNameString显示名称
messageChainArray消息数组
messageIdInt可以只使用消息messageId,从当前对话上下文缓存中读取一条消息作为节点
messageRefobject引用缓存中其他对话上下文的消息作为节点
messageRef.messageIdInt引用的 messageId
messageRef.targetInt引用的上下文目标,群号、好友账号

(senderId, time, senderName, messageChain), messageId, messageRef 是三种不同构造引用节点的方式,选其中一个/组传参即可

File

{
  "type": "File",
  "id": "",
  "name": "",
  "size": 0
}
名字类型说明
idString文件识别id
nameString文件名
sizeLong文件大小

ShortVideo

{
  "type": "ShortVideo",
  "videoId": "",
  "fileMd5": "",
  "fileSize": 0,
  "fileFormat": "",
  "filename": "",
  "videoUrl": "",
  "thumbnailUrl": null
}
名字类型说明
videoIdString短视频id
fileMd5String短视频MD5
fileSizeLong文件大小
fileFormatString文件格式
filenameString文件名,不含扩展名
videoUrlString适配文件下载地址, 离线消息可能为 null
thumbnailUrlString封面地址,一般为 null

MiraiCode

{
  "type": "MiraiCode",
  "code": "hello[mirai:at:1234567]"
}
名字类型说明
codeStringMiraiCode

MiraiCode的使用open in new window