diff --git a/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageEvent.java b/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageEvent.java index beae46c..2177eb5 100644 --- a/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageEvent.java +++ b/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageEvent.java @@ -16,7 +16,7 @@ public class MiraiMessageEvent extends MessageEvent { public MiraiMessageEvent(ContactMessage message) { super(message instanceof GroupMessage ? ((GroupMessage) message).getGroup().getId() : 0, - message.getSender().getId(), message.getMessage().contentToString()); + message.getSender().getId(), getMessageBodyWithoutSource(message.getMessage().toString())); this.messageObject = Objects.requireNonNull(message); if(message instanceof GroupMessage) { messageSender = new MiraiMessageSender(((GroupMessage) message).getGroup(), MessageSource.Group); @@ -26,6 +26,19 @@ public class MiraiMessageEvent extends MessageEvent { } + /** + * 将ContactMessage获得的消息内容删除 Mirai:source 并返回. + *

该做法比较保守, 防止Mirai:source位置出现变动.

+ * @param message ContactMessage的消息内容; + * @return 返回删除了Mirai:source的消息 + */ + private static String getMessageBodyWithoutSource(String message) { + StringBuilder builder = new StringBuilder(message); + int startIndex = builder.indexOf("[mirai:source:"); + int endIndex = builder.indexOf("]", startIndex) + 1; + return builder.delete(startIndex, endIndex).toString(); + } + @Override public int sendMessage(final String message) { return messageSender.sendMessage(message);