ForwardMessageBuilder
转发消息 DSL 构建器.
总览
在 Java 使用一般方法添加消息构建转发:
ForwardMessageBuilder builder = new ForwardMessageBuilder(group);
builder.add(123456L, "群员A", new PlainText("消息"))
builder.add(user, new PlainText("msg"));
builder.add(user, (chain) -> {
chain.add(new At(user));
chain.add(new PlainText("Hello"))
}); // 使用 Java 8 lambda 语法, MessageChainBuilder 快速构建消息链
builder.add(event); // 可添加 MessageEvent
builder.setDisplayStrategy(new ForwardMessage.DisplayStrategy() {
}); // 可选, 修改显示策略
ForwardMessage forward = builder.build();
group.sendMessage(forward);
在 Kotlin 使用一般方法添加消息构建转发:
val forward: ForwardMessage = buildForwardMessage {
add(123456L, "群员A", PlainText("消息"))
add(user, PlainText("msg"))
add(user) {
// this: MessageChainBuilder
add(At(user))
add(PlainText("msg"))
};
add(event) // 可添加 MessageEvent
}
group.sendMessage(forward);
friend.sendMessage(forward);
在 Kotlin 也可以使用 DSL 构建一个转发:
buildForwardMessage {
123456789 named "鸽子 A" says "咕" // 意为 名为 "鸽子 A" 的用户 123456789 发送了一条内容为 "咕" 的消息
100200300 named "鸽子 C" at 1582315452 says "咕咕咕" // at 设置时间 (在 PC 端显示, 在手机端不影响顺序)
987654321 named "鸽子 B" says "咕" // 未指定时间, 则自动顺序安排时间
myFriend says "咕" // User.says
bot says { // 构造消息链, 同 `buildMessageChain`
add("发个图片试试")
add(Image("{90CCED1C-2D64-313B-5D66-46625CAB31D7}.jpg"))
}
val member: Member = ...
member says "我是幸运群员" // 使用 `User says` 则会同时设置发送人名称
}
DSL 语法在下文详细解释.
上述示例效果一样, 根据个人偏好选择.
Kotlin DSL 语法
下文中 S
代表消息发送人. 可接受: 发送人账号 id(Long 或 Int) 或 User
下文中 M
代表消息内容. 可接受: String, Message, 或 构造消息链 的 DSL 代码块
陈述一条消息
语句 123456789 named "鸽子 A" says "咕"
创建并添加了一条名为 "鸽子 A" 的用户 123456789 发送的内容为 "咕" 的消息
陈述
一条 '陈述' 必须包含以下属性:
发送人. 只可以作为 infix 函数的接收者 (receiver) 设置, 如
sender says M
,sender named "xxx"
,sender at 123
消息内容. 只可以通过
says
函数的参数设置, 即says M
.
组合陈述
现支持的可选属性为 named
, at
最基础的陈述为 S says M
. 可在 says
前按任意顺序添加组合属性:
S named "xxx" says M
;
S at 123456 says M
; 其中 123456
为发信时间
属性的顺序并不重要. 如下两句陈述效果相同.
S named "xxx" at 123456 says M
;
S at 123456 named "xxx" says M
;
重复属性
若属性有重复, 新属性会替换旧属性.
S named "name1" named "name2" says M
最终的发送人名称为 "name2"
Constructors
Types
Functions
从消息事件添加一个消息
添加一个消息. 若不指定 time, 将会使用 currentTime 自增 1 的时间.
构建并添加一个消息. 若不指定 time, 将会使用 currentTime 自增 1 的时间.
为一条消息指定时间.
为一条消息指定时间和发送人名称.
使用 displayStrategy 渲染并构造可以发送的 ForwardMessage.
为一条消息指定发送人名称.
添加一条消息, 自动按顺序调整时间
构造并添加一个 MessageChain, 自动按顺序调整时间
构造 RawForwardMessage. RawForwardMessage 可以被多个 渲染RawForwardMessage.render.