Skip to content

消息构建器参考

概述

GroupMessageRequestC2CMessageRequest 是底层消息构建 API,用于 BotApi.sendGroupMessage() / sendC2CMessage()。大多数场景推荐使用 Bngeuit 静态方法,仅在需要精细控制时使用 Builder。

GroupMessageRequest

群消息发送请求 Builder。

基本用法

java
import cn.org.bukkit.bngeuit.dto.message.*;
import cn.org.bukkit.bngeuit.Bngeuit;
import cn.org.bukkit.bngeuit.core.BotApi;

BotApi api = Bngeuit.api();

api.sendGroupMessage(GroupMessageRequest.builder()
    .groupOpenid("group_openid")
    .msgType(MsgType.TEXT)
    .content("Hello!")
    .msgSeq(1)
    .build());

Builder 方法

方法必填说明
groupOpenid(String)群 OpenID
msgType(int)消息类型(0=文本, 2=Markdown, 7=Media, 8=卡片)
msgType(MsgType)消息类型(枚举)
msgSeq(int)消息序号(用于去重/排序)
content(String)文本内容
markdown(MessageMarkdown)Markdown 负载
keyboard(Keyboard)内嵌键盘
card(Card)图文卡片(仅 msg_type=8)
media(MediaInfo)富媒体信息(仅 msg_type=7)
msgId(String)前置消息 ID(被动回复时使用)
eventId(String)事件 ID(被动回复时使用)
messageReference(MessageReference)消息引用
isWakeup(boolean)互动召回消息标记

示例

文本消息

java
api.sendGroupMessage(GroupMessageRequest.builder()
    .groupOpenid(gid)
    .msgType(MsgType.TEXT)
    .content("Hello!")
    .msgSeq(1)
    .build());

Markdown 消息

java
api.sendGroupMessage(GroupMessageRequest.builder()
    .groupOpenid(gid)
    .msgType(MsgType.MARKDOWN)
    .markdown(new MessageMarkdown("**加粗**"))
    .msgSeq(1)
    .build());

带键盘的 Markdown

java
Keyboard kb = Keyboard.custom()
    .addRow(r -> r.addButton(Button.callback("ok", "确认", ButtonStyle.BLUE, "/confirm")))
    .build();

api.sendGroupMessage(GroupMessageRequest.builder()
    .groupOpenid(gid)
    .msgType(MsgType.MARKDOWN)
    .markdown(new MessageMarkdown("请选择:"))
    .keyboard(kb)
    .msgSeq(1)
    .build());

被动回复

java
api.sendGroupMessage(GroupMessageRequest.builder()
    .groupOpenid(gid)
    .msgType(MsgType.TEXT)
    .content("收到你的消息")
    .msgId(e.getId())      // 原消息 ID
    .eventId(e.getEventId()) // 原事件 ID
    .msgSeq(1)
    .build());

C2CMessageRequest

私聊消息发送请求 Builder。

基本用法

java
api.sendC2CMessage(C2CMessageRequest.builder()
    .openid("user_openid")
    .msgType(MsgType.TEXT)
    .content("Hello!")
    .msgSeq(1)
    .build());

Builder 方法

方法必填说明
openid(String)接收者 OpenID
msgType(int)消息类型
msgType(MsgType)消息类型(枚举)
msgSeq(int)消息序号
content(String)文本内容
markdown(MessageMarkdown)Markdown 负载
keyboard(Keyboard)内嵌键盘
media(MediaInfo)富媒体信息
msgId(String)前置消息 ID(被动回复)
eventId(String)事件 ID(被动回复)
messageReference(MessageReference)消息引用
inputNotify(InputNotify)输入中状态(仅 msg_type=6)
isWakeup(boolean)互动召回消息标记

与 GroupMessageRequest 的区别

特性GroupMessageRequestC2CMessageRequest
目标群 OpenID用户 OpenID
图文卡片card(Card)❌ 不支持
输入中状态inputNotify(InputNotify)

StreamMessageRequest

流式消息请求 Builder。

基本用法

java
import cn.org.bukkit.bngeuit.dto.message.*;

StreamMessageRequest req = StreamMessageRequest.builder()
    .id(msgId)
    .content("**流式内容...**")
    .contentType(StreamContentType.MARKDOWN)
    .inputMode(InputMode.REPLACE)
    .build();

api.createStreamMessage(openid, req);

Builder 方法

方法必填说明
id(String)消息 ID
content(String)消息内容
contentType(StreamContentType)内容类型(TEXT / MARKDOWN
inputMode(InputMode)输入模式(APPEND / REPLACE

MsgType 枚举

枚举数值说明
TEXT0普通文本
MARKDOWN2Markdown
INPUT_NOTIFY6输入中状态(仅私聊)
MEDIA7富媒体
CARD8图文卡片(仅群聊)