Appearance
消息构建器参考
概述
GroupMessageRequest 和 C2CMessageRequest 是底层消息构建 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 的区别
| 特性 | GroupMessageRequest | C2CMessageRequest |
|---|---|---|
| 目标 | 群 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 枚举
| 枚举 | 数值 | 说明 |
|---|---|---|
TEXT | 0 | 普通文本 |
MARKDOWN | 2 | Markdown |
INPUT_NOTIFY | 6 | 输入中状态(仅私聊) |
MEDIA | 7 | 富媒体 |
CARD | 8 | 图文卡片(仅群聊) |
