- final Pattern mentionPattern = Pattern.compile("([0-9]+):([0-9]+):(.+)");
- mentions = new ArrayList<>();
- for (final var mention : mentionStrings) {
- final var matcher = mentionPattern.matcher(mention);
- if (!matcher.matches()) {
- throw new UserErrorException("Invalid mention syntax ("
- + mention
- + ") expected 'start:end:recipientNumber'");
- }
- mentions.add(new Message.Mention(CommandUtil.getSingleRecipientIdentifier(matcher.group(3),
- m.getSelfNumber()), Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2))));
- }
+ quote = null;
+ }
+
+ final List<Message.Preview> previews;
+ String previewUrl = ns.getString("preview-url");
+ if (previewUrl != null) {
+ String previewTitle = ns.getString("preview-title");
+ String previewDescription = ns.getString("preview-description");
+ String previewImage = ns.getString("preview-image");
+ previews = List.of(new Message.Preview(previewUrl,
+ Optional.ofNullable(previewTitle).orElse(""),
+ Optional.ofNullable(previewDescription).orElse(""),
+ Optional.ofNullable(previewImage)));
+ } else {
+ previews = List.of();
+ }
+
+ final Message.StoryReply storyReply;
+ final var storyReplyTimestamp = ns.getLong("story-timestamp");
+ if (storyReplyTimestamp != null) {
+ final var storyAuthor = ns.getString("story-author");
+ storyReply = new Message.StoryReply(storyReplyTimestamp,
+ CommandUtil.getSingleRecipientIdentifier(storyAuthor, m.getSelfNumber()));
+ } else {
+ storyReply = null;
+ }
+
+ if (messageText.isEmpty() && attachments.isEmpty() && sticker == null && quote == null) {
+ throw new UserErrorException(
+ "Sending empty message is not allowed, either a message, attachment or sticker must be given.");