commands with callbackData support
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -4,17 +4,55 @@ import lombok.experimental.UtilityClass;
|
||||
import ru.penkrat.stbf.api.Action;
|
||||
import ru.penkrat.stbf.api.RequestMatcher;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@UtilityClass
|
||||
public class RequestMatchers {
|
||||
|
||||
public RequestMatcher action(Action action) {
|
||||
return request -> request.getMessageText()
|
||||
.filter(text -> matchText(action, text))
|
||||
.isPresent();
|
||||
}
|
||||
public RequestMatcher action(Action action) {
|
||||
return request -> request.getMessageText()
|
||||
.filter(text -> matchText(action, text))
|
||||
.isPresent();
|
||||
}
|
||||
|
||||
private static boolean matchText(Action action, String inputText) {
|
||||
return inputText.equalsIgnoreCase(action.getText())
|
||||
|| (action.getCmd() != null && inputText.equalsIgnoreCase(action.getCmd()));
|
||||
}
|
||||
public RequestMatcher cmd(Action action) {
|
||||
return request -> request.getMessageText()
|
||||
.filter(Objects::nonNull)
|
||||
.filter(data -> Objects.equals(action.getCmd(), data))
|
||||
.isPresent();
|
||||
}
|
||||
|
||||
public RequestMatcher text(String callbackData) {
|
||||
return request -> request.getCallbackData()
|
||||
.filter(Objects::nonNull)
|
||||
.filter(data -> Objects.equals(callbackData, data))
|
||||
.isPresent();
|
||||
}
|
||||
|
||||
public RequestMatcher callbackData(String callbackData) {
|
||||
return request -> request.getCallbackData()
|
||||
.filter(Objects::nonNull)
|
||||
.filter(data -> Objects.equals(callbackData, data))
|
||||
.isPresent();
|
||||
}
|
||||
|
||||
public RequestMatcher callbackDataStartsWith(String callbackDataPrefix) {
|
||||
return request -> request.getCallbackData()
|
||||
.filter(Objects::nonNull)
|
||||
.filter(data -> data.startsWith(callbackDataPrefix))
|
||||
.isPresent();
|
||||
}
|
||||
|
||||
public RequestMatcher callbackDataRegexp(String callbackDataPrefix) {
|
||||
return request -> request.getCallbackData()
|
||||
.filter(Objects::nonNull)
|
||||
.filter(Pattern.compile(callbackDataPrefix).asPredicate())
|
||||
.isPresent();
|
||||
}
|
||||
|
||||
private static boolean matchText(Action action, String inputText) {
|
||||
return inputText.equalsIgnoreCase(action.getText())
|
||||
|| (action.getCmd() != null && inputText.equalsIgnoreCase(action.getCmd()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user