Appearance
键盘与按钮
快捷工厂
java
import cn.org.bukkit.bngeuit.dto.message.*;
// 回调按钮:点击通知后台(触发 INTERACTION_CREATE 事件)
Button.callback("btn1", "确认", ButtonStyle.BLUE, "/confirm");
// 跳转按钮:点击打开 URL
Button.link("btn2", "官网", ButtonStyle.GRAY, "https://qq.com");
// 指令按钮:点击自动输入 @bot 指令
Button.command("btn3", "帮助", ButtonStyle.BLUE, "帮助");ButtonStyle
| 枚举值 | 数值 | 说明 |
|---|---|---|
GRAY | 0 | 灰线框 |
BLUE | 1 | 蓝线框 |
WHITE | 2 | 白字 |
BLUE_BG | 3 | 蓝底白字 |
ButtonActionType
| 枚举值 | 数值 | 说明 |
|---|---|---|
JUMP | 0 | 跳转按钮:打开 http 链接或小程序 |
CALLBACK | 1 | 回调按钮:触发互动事件,data 传给后台 |
COMMAND | 2 | 指令按钮:自动在输入框插入 @bot data |
完整 Builder
java
Button btn = new Button.Builder("btn_id", "按钮文字", ButtonStyle.BLUE,
ButtonActionType.CALLBACK, "/data")
.visitedLabel("已点击")
.permission(Permission.specify(List.of("openid1", "openid2")))
.unsupportTips("请升级客户端")
.enter(true)
.reply(true)
.build();构建键盘
java
import cn.org.bukkit.bngeuit.Bngeuit;
import cn.org.bukkit.bngeuit.dto.message.Keyboard;
import cn.org.bukkit.bngeuit.dto.message.Button;
Keyboard kb = Keyboard.custom()
.addRow(r -> r
.addButton(Button.callback("ok", "确认", ButtonStyle.BLUE, "/confirm"))
.addButton(Button.callback("cancel", "取消", ButtonStyle.GRAY, "/cancel"))
)
.addRow(r -> r
.addButton(Button.link("home", "官网", ButtonStyle.GRAY, "https://qq.com"))
)
.build();
// 附带键盘发送(键盘只能挂载 Markdown 消息,文本会被自动转 Markdown)
Bngeuit.sendGroupText(groupOpenid, msgSeq, "请选择操作:", kb);
Bngeuit.sendGroupMarkdown(groupOpenid, msgSeq, "**请选择:**", kb);模板键盘:
java
Keyboard kb = Keyboard.template("1070001");处理按钮点击
java
import cn.org.bukkit.bngeuit.Bngeuit;
import cn.org.bukkit.bngeuit.core.BotApi;
import cn.org.bukkit.bngeuit.event.SubscribeEvent;
import cn.org.bukkit.bngeuit.event.receive.InteractionEvent;
@SubscribeEvent
public void onInteraction(InteractionEvent e) {
// 必须响应,否则客户端一直 loading
Bngeuit.respondInteraction(e.getId(),
BotApi.InteractionResponseCode.SUCCESS);
// 按钮回调数据在 button_data 中
if ("/confirm".equals(e.getButtonData())) {
Bngeuit.sendGroupText(e.getGroupOpenid(), 1, "操作已确认!");
}
}InteractionEvent 位置
InteractionEvent 位于 cn.org.bukkit.bngeuit.event.receive 包。按钮数据用 getButtonData() 获取(旧文档中的 getData() 不存在)。
权限控制
java
// 所有人可见(默认)
Permission.ALL;
// 仅指定用户可见
Permission.specify(List.of("openid1", "openid2"));PermissionType
Permission.type 字段使用 PermissionType 枚举:
| 枚举值 | 数值 | 说明 |
|---|---|---|
SPECIFY_USER | 0 | 仅指定用户可见 |
ADMIN | 1 | 仅管理员可见 |
ALL | 2 | 所有人可见 |
