import org.asamk.signal.commands.exceptions.UserErrorException;
import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.CaptchaRequiredException;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupIdFormatException;
import org.asamk.signal.manager.api.InvalidNumberException;
+import org.asamk.signal.manager.api.RateLimitException;
import org.asamk.signal.manager.api.RecipientIdentifier;
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupIdFormatException;
import java.util.Collection;
import java.util.HashSet;
try {
return RecipientIdentifier.Single.fromString(recipientString, localNumber);
} catch (InvalidNumberException e) {
- throw new UserErrorException("Invalid phone number '" + recipientString + "': " + e.getMessage());
+ throw new UserErrorException("Invalid phone number '" + recipientString + "': " + e.getMessage(), e);
}
}
+
+ public static String getCaptchaRequiredMessage(final CaptchaRequiredException e, final boolean captchaProvided) {
+ String message;
+ if (!captchaProvided) {
+ message = """
+ Captcha required for verification, use --captcha CAPTCHA
+ To get the token, go to https://signalcaptchas.org/registration/generate.html
+ After solving the captcha, right-click on the "Open Signal" link and copy the link.""";
+ } else {
+ message = "Invalid captcha given.";
+ }
+ if (e.getNextAttemptTimestamp() > 0) {
+ message += "\nNext Captcha may be provided at " + DateUtils.formatTimestamp(e.getNextAttemptTimestamp());
+ }
+ return message;
+ }
+
+ public static String getRateLimitMessage(final RateLimitException e) {
+ String message = "Rate limit reached";
+ if (e.getNextAttemptTimestamp() > 0) {
+ message += "\nNext attempt may be tried at " + DateUtils.formatTimestamp(e.getNextAttemptTimestamp());
+ }
+ return message;
+ }
}