X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/e5ebb732cbda9fccc3eeb3a964d7c48202113a8a..4ce194afe28e8918d066b267dec8ea9cf6b4b2a0:/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 004ba506..cce1d21e 100644 --- a/src/main/java/org/asamk/signal/commands/SendCommand.java +++ b/src/main/java/org/asamk/signal/commands/SendCommand.java @@ -108,7 +108,9 @@ 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")); @@ -177,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 @@ -245,8 +250,14 @@ public class SendCommand implements JsonRpcLocalCommand { : m.sendMessage(message, recipientIdentifiers, notifySelf); outputResult(outputWriter, results); } catch (AttachmentInvalidException | IOException e) { - throw new UnexpectedErrorException("Failed to send message: " + e.getMessage() + " (" + e.getClass() - .getSimpleName() + ")", e); + if (e instanceof IOException io && io.getMessage().contains("No prekeys available")) { + throw new UnexpectedErrorException("Failed to send message: " + e.getMessage() + " (" + e.getClass() + .getSimpleName() + "), maybe one of the devices of the recipient wasn't online for a while.", + e); + } else { + throw new UnexpectedErrorException("Failed to send message: " + e.getMessage() + " (" + e.getClass() + .getSimpleName() + ")", e); + } } catch (GroupNotFoundException | NotAGroupMemberException | GroupSendingNotAllowedException e) { throw new UserErrorException(e.getMessage()); } catch (UnregisteredRecipientException e) { @@ -257,7 +268,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();