Closed KoSChicken closed 3 years ago
对于合并转发消息,暂时没有对其适配的抽象接口,目前你可以通过构建原生Mirai的合并转发消息,并通过 MiraiMessageContentBuilder
进行构建。参考示例:
@Beans
public class TestListener {
/**
* 只有在mirai组件环境下可以注入获取。
*/
@Depend
private MiraiMessageContentBuilderFactory miraiMessageContentBuilderFactory;
@OnGroup
// @Filter // ...
public void test(GroupMsg groupMsg, Sender sender) {
// 得到builder
final MiraiMessageContentBuilder builder = miraiMessageContentBuilderFactory.getMessageContentBuilder();
// net.mamoe.mirai.Bot
// 得到Mirai的bot实例
final Bot miraiBot = Bot.findInstance(123456789L);
if (miraiBot == null) {
throw new NullPointerException("Bot 123456789");
}
// 比如你要发给一个群
final Group group = miraiBot.getGroupOrFail(1145141919L);
// 寻找一个发送者,比如某个群员
final NormalMember senderOnGroup = group.getOrFail(888888888);
// 构建转发消息
final ForwardMessageBuilder forwardMessageBuilder = new ForwardMessageBuilder(group);
// TODO 通过 builder 构建一个 mirai的 ForwardMessage
// forwardMessageBuilder.add()
// 比如说你要发送图片,则构建mirai原生的图片对象:
// 通过file
final ExternalResource resource1 = ExternalResource.create(new File("..."));
// 或其他方式
// ExternalResource.create(...)
// 通过某个群上传
final Image image = group.uploadImage(resource1);
// 添加一个图片
forwardMessageBuilder.add(senderOnGroup, image);
// 得到最终的转发消息
final ForwardMessage forwardMessage = forwardMessageBuilder.build();
// 得到 mirai 组件的消息正文
final MiraiMessageContent miraiMessageContent = builder.message(forwardMessage).build();
// 通过 simbot 发送消息
sender.sendGroupMsg(123123, miraiMessageContent);
// 当然,你也可以选择直接通过mirai本身发送:
// group.sendMessage(forwardMessage);
}
}
至于是否会提供针对于转发消息的整合api,会考虑在 v2.3.0
更新期间追加,可以关注后续更新日志或当前issue。
非常感谢你的解答
version: ``
module: ``
疑问描述
例如我现在想要通过合并转发的方式发送一组图片,有没有办法直接创建一个合并转发类型的消息?