docs: public Ability reportCommands() {
      return builder()
          .name(REPORT)
          .locality(ALL)
          .privacy(CREATOR)
          .input(0)
          .action(ctx -> {
            String commands = abilities.entrySet().stream()
                .filter(entry -> nonNull(entry.getValue().info()))
                .map(entry -> {
                  String name = entry.getValue().name();
                  String info = entry.getValue().info();
                  return format("%s - %s", name, info);
                })
                .sorted()
                .reduce((a, b) -> format("%s%n%s", a, b))
                .orElse(getLocalizedMessage(ABILITY_COMMANDS_NOT_FOUND, ctx.user().getLanguageCode()));
  
            silent.send(commands, ctx.chatId());
          })
          .build();
    }