X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/3602ef9be940e287bfe6ed32972ce13fea9deaa4..ed79e0b37717a51ff83114a07202c25fcc274206:/src/main/java/org/asamk/signal/commands/SendCommand.java diff --git a/src/main/java/org/asamk/signal/commands/SendCommand.java b/src/main/java/org/asamk/signal/commands/SendCommand.java index 1d0b46e4..39be74ee 100644 --- a/src/main/java/org/asamk/signal/commands/SendCommand.java +++ b/src/main/java/org/asamk/signal/commands/SendCommand.java @@ -51,6 +51,9 @@ public class SendCommand implements JsonRpcLocalCommand { subparser.addArgument("--note-to-self") .help("Send the message to self without notification.") .action(Arguments.storeTrue()); + subparser.addArgument("--notify-self") + .help("If self is part of recipients/groups send a normal message, not a sync message.") + .action(Arguments.storeTrue()); var mut = subparser.addMutuallyExclusiveGroup(); mut.addArgument("-m", "--message").help("Specify the message to be sent."); @@ -68,10 +71,12 @@ public class SendCommand implements JsonRpcLocalCommand { .action(Arguments.storeTrue()); subparser.addArgument("--mention") .nargs("*") - .help("Mention another group member (syntax: start:length:recipientNumber)"); + .help("Mention another group member (syntax: start:length:recipientNumber). " + + "Unit of start and length is UTF-16 code units, NOT Unicode code points."); subparser.addArgument("--text-style") .nargs("*") - .help("Style parts of the message text (syntax: start:length:STYLE)"); + .help("Style parts of the message text (syntax: start:length:STYLE). " + + "Unit of start and length is UTF-16 code units, NOT Unicode code points."); subparser.addArgument("--quote-timestamp") .type(long.class) .help("Specify the timestamp of a previous message with the recipient or group to add a quote to the new message."); @@ -103,8 +108,11 @@ public class SendCommand implements JsonRpcLocalCommand { @Override public void handleCommand( - final Namespace ns, final Manager m, final OutputWriter outputWriter + final Namespace ns, + final Manager m, + final OutputWriter outputWriter ) throws CommandException { + final var notifySelf = Boolean.TRUE.equals(ns.getBoolean("notify-self")); final var isNoteToSelf = Boolean.TRUE.equals(ns.getBoolean("note-to-self")); final var recipientStrings = ns.getList("recipient"); final var groupIdStrings = ns.getList("group-id"); @@ -171,6 +179,9 @@ public class SendCommand implements JsonRpcLocalCommand { final var quoteTimestamp = ns.getLong("quote-timestamp"); if (quoteTimestamp != null) { final var quoteAuthor = ns.getString("quote-author"); + if (quoteAuthor == null) { + throw new UserErrorException("Quote author parameter is missing"); + } final var quoteMessage = ns.getString("quote-message"); final var quoteMentionStrings = ns.getList("quote-mention"); final var quoteMentions = quoteMentionStrings == null @@ -236,7 +247,7 @@ public class SendCommand implements JsonRpcLocalCommand { textStyles); var results = editTimestamp != null ? m.sendEditMessage(message, recipientIdentifiers, editTimestamp) - : m.sendMessage(message, recipientIdentifiers); + : m.sendMessage(message, recipientIdentifiers, notifySelf); outputResult(outputWriter, results); } catch (AttachmentInvalidException | IOException e) { throw new UnexpectedErrorException("Failed to send message: " + e.getMessage() + " (" + e.getClass() @@ -251,7 +262,8 @@ public class SendCommand implements JsonRpcLocalCommand { } private List parseMentions( - final String selfNumber, final List mentionStrings + final String selfNumber, + final List mentionStrings ) throws UserErrorException { final var mentionPattern = Pattern.compile("(\\d+):(\\d+):(.+)"); final var mentions = new ArrayList();