private void find(MessageContext context, String args) { DiscordApiClient apiClient = context.getApiClient(); Channel channel = context.getChannel(); Pattern pattern; try { pattern = Pattern.compile(args); } catch (PatternSyntaxException pse) { apiClient.sendMessage(loc.localize("commands.admin.find.response.invalid"), channel); return; } Predicate<String> matcher = pattern.asPredicate(); List<User> results = context .getServer() .getMembers() .stream() .map(Member::getUser) .filter(u -> matcher.test(u.getUsername())) .collect(Collectors.toList()); int size = results.size(); if (size > 20) { apiClient.sendMessage(loc.localize("commands.admin.find.response.oversize", size), channel); return; } StringJoiner resultJoiner = new StringJoiner(", "); results.stream().map(this::userToResult).forEach(resultJoiner::add); apiClient.sendMessage( loc.localize("commands.admin.find.response.format", size, resultJoiner.toString()), channel); }