[AB-xxx] fixing string command parameters in combination with attachments, the attachment was still part of the parameters and used normally, if the parameter type is string, attachments are being skipped

This commit is contained in:
Sheldan
2021-04-24 21:50:41 +02:00
parent eb79522843
commit 460a4663d7
2 changed files with 17 additions and 9 deletions

View File

@@ -273,7 +273,9 @@ public class CommandReceivedHandler extends ListenerAdapter {
parsedParameters.add(ParseResult.builder().parameter(param).result(future).build());
} else {
Object result = handler.handle(value, iterators, param, message, command);
parsedParameters.add(ParseResult.builder().parameter(param).result(result).build());
if(result != null) {
parsedParameters.add(ParseResult.builder().parameter(param).result(result).build());
}
}
break;
}
@@ -300,13 +302,15 @@ public class CommandReceivedHandler extends ListenerAdapter {
}).collect(Collectors.toList());
List<ParseResult> parseResults = new ArrayList<>();
for (int i = 0; i < allParamResults.size(); i++) {
ParseResult parseResult = ParseResult
.builder()
.result(allParamResults.get(i))
// all parameters beyond the most possible ones are attributed to be from the last parameter
.parameter(parameters.get(Math.min(i, parameters.size() - 1)))
.build();
parseResults.add(parseResult);
if(allParamResults.get(i) != null) {
ParseResult parseResult = ParseResult
.builder()
.result(allParamResults.get(i))
// all parameters beyond the most possible ones are attributed to be from the last parameter
.parameter(parameters.get(Math.min(i, parameters.size() - 1)))
.build();
parseResults.add(parseResult);
}
}
multipleFuturesFuture.complete(Parameters.builder().parameters(extractParametersFromParsed(parseResults)).build());
});

View File

@@ -13,7 +13,11 @@ public class StringParameterHandlerImpl implements StringParameterHandler {
@Override
public Object handle(UnparsedCommandParameterPiece input, CommandParameterIterators iterators, Parameter param, Message context, Command command) {
return input.getValue().toString();
if(input.getValue() instanceof String) {
return input.getValue().toString();
} else {
return null;
}
}
@Override